1、complex()
成都创新互联是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10年时间我们累计服务了上千家以及全国政企客户,如成都自上料搅拌车等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致称扬。
返回一个形如 a+bj 的复数,传入参数分为三种情况:
参数为空时,返回0j;参数为字符串时,将字符串表达式解释为复数形式并返回;参数为两个整数(a,b)时,返回 a+bj;参数只有一个整数 a 时,虚部 b 默认为0,函数返回 a+0j。
2、dir()
不提供参数时,返回当前本地范围内的名称列表;提供一个参数时,返回该对象包含的全部属性。
3、divmod(a,b)
a -- 代表被除数,整数或浮点数;b -- 代表除数,整数或浮点数;根据 除法运算 计算 a,b 之间的商和余数,函数返回一个元组(p,q) ,p 代表商 a//b ,q 代表余数 a%b。
4、enumerate(iterable,start=0)
iterable -- 一个可迭代对象,列表、元组序列等;start -- 计数索引值,默认初始为0‘该函数返回枚举对象是个迭代器,利用 next() 方法依次返回元素值,每个元素以元组形式存在,包含一个计数元素(起始为 start )和 iterable 中对应的元素值。
def exchange(d):
res = dict((v,k) for k,v in d.items())
print(res)
print(d)
一行代码完成交换的,按你的需求定义了一个函数
#
python中只有for
i
in
range()语法,没有for
i
range()
#
for
i
in
...
是遍历一个可遍历的对象,主要还是了解一下range()函数
#
range()
可以接受三个参数值,start,
end,
step
#
start
:
开始的位置
#
end
:
结束的位置
#
step
:
步长
#
e.g.
l
=
list("ABCDEFG")
#
指定
end
for
i
in
range(len(l)):
print(l[i])
A
B
C
D
E
F
G
#
指定start,end
for
i
in
range(4,
len(l)):
print(l[i])
E
F
G
#
指定start,end,step
for
i
in
range(0,
len(l),
2):
print(l[i])
A
C
E
G
一、函数的定义
函数是指将一组语句的集合通过一个名字(函数名)封装起来,想要执行这个函数,只需要调用函数名即可
特性:
减少重复代码
使程序变得可扩展
使程序变得易维护
二、函数的参数
2.1、形参和实参数
形参,调用时才会存在的值
实惨,实际存在的值
2.2、默认参数
定义:当不输入参数值会有一个默认的值,默认参数要放到最后
2.3、 关键参数
定义: 正常情况下,给函数传参数要安装顺序,不想按顺序可以用关键参数,只需要指定参数名即可,(指定了参数名的就叫关键参数),但是要求是关键参数必须放在位置参数(以位置顺序确定对应的参数)之后
2.4、非固定参数
定义: 如你的函数在传入参数时不确定需要传入多少个参数,就可以使用非固定参数
# 通过元组形式传递
# 通过列表形式传递
# 字典形式(通过k,value的方式传递)
# 通过变量的方式传递
三、函数的返回值
作用:
返回函数执行结果,如果没有设置,默认返回None
终止函数运行,函数遇到return终止函数
四、变量的作用域
全局变量和局部变量
在函数中定义的变量叫局部变量,在程序中一开始定义的变量叫全局变量
全局变量作用域整个程序,局部变量作用域是定义该变量的函数
当全局变量与局部变量同名是,在定义局部变量的函数内,局部变量起作用,其他地方全局变量起作用
同级的局部变量不能互相调用
想要函数里边的变量设置成全局变量,可用global进行设置
五、特殊函数
5.1、嵌套函数
定义: 嵌套函数顾名思义就是在函数里边再嵌套一层函数
提示 在嵌套函数里边调用变量是从里往外依次调用,意思就是如果需要调用的变量在当前层没有就会去外层去调用,依次内推
匿名函数
基于Lambda定义的函数格式为: lambda 参数:函数体
参数,支持任意参数。
匿名函数适用于简单的业务处理,可以快速并简单的创建函数。
# 与三元运算结合
5.3、高阶函数
定义:变量可以指向函数,函数的参数可以接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数称之为高阶函数 只需要满足一下任意一个条件,即是高阶函数
接收一个或多个函数作为输入
return返回另一个函数
5.4、递归函数
定义:一个函数可以调用其他函数,如果一个函数调用自己本身,这个函数就称为递归函数
在默认情况下Python最多能递归1000次,(这样设计师是为了防止被内存被撑死)可以通过sys.setrecursionlimit(1500)进行修改
递归实现过程是先一层一层的进,然后在一层一层的出来
必须有一个明确的条件结束,要不然就是一个死循环了
每次进入更深层次,问题规模都应该有所减少
递归执行效率不高,递归层次过多会导致站溢出
# 计算4的阶乘 4x3x2x1
# 打印数字从1-100
5.5、闭包现象
定义:内层函数调用外层函数的变量,并且内存函数被返回到外边去了
闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域
在python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后在缩进块中编写函数体,函数的返回值用return语句返回
def 函数名([参数1,参数2,...,参数n]):
函数体
函数代码以def关键词开头,后接函数标识符名称和圆括号():
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
函数的第一行语句可以选择性的使用文档字符串-用于存放函数说明
函数内容以冒号起始,并且缩进
return[表达式]结束函数,选择性的返回一个值给调用方,不带表达式的return相当于返回None
def xxx(f, x, y):
return eval(f+"("+str(x)+", "+str(y)+")")
python中函数也可以作为参数传递, 所以你可以直接传递函数, 而不是函数名.
Python code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
In [350]: def f(x, y):
...: return x+y
...:
In [352]: def usefunc(func, x, y):
...: return func(x, y)
...:
In [353]: usefunc(f, 10, 20)
Out[353]: 30
In [354]: def g(x, y):
...: return x*y
...:
In [355]: usefunc(g, 10, 20)
Out[355]: 200
如果确实需要用函数名(字符串)来确定函数, 最好的办法是自己建一个字典, 来保存允许用户使用的函数名, 例如
1
functions = {'double': lambda x: x*2, "triple": lambda x: x*3}
eval是很危险的办法, 尤其是函数名是由你无法控制的用户输入时.