函数是一个过程、功能、动作,实现某个功能或者某些功能指令的集合
1 函数的定义
def (define function)
语法结构:def 函数名称([参数列表 ] ) :# 缩进 函数体#[ return 返回值 ]
#定义一个取绝对值的函数
def abs(x):
if x >= 0:
return x
else:
return -x
print(abs(-100))
#结果返回多个值
import math
def move(x,y,step,angle=0):
nx = x + step*math.cos(angle)
ny = y - step*math.sin(angle)
return nx,ny
x,y = move(7,7,7,math.pi/6)
print(x,y)
#结果返回多个值(返回多个值的时候实际返回的是一个元组)
import math
def move(x,y,step,angle=0):
nx = x + step*math.cos(angle)
ny = y - step*math.sin(angle)
return nx,ny
r = move(7,7,7,math.pi/6)
print(r)
2 函数的调用
函数名称([参数
]
)
#abs为取绝对值函数
>>> x = abs
>>> x(-1)
1
3 函数的分类
1
、有无参数
有参函数和无参函数
2
、有无返回值
有返回值函数和无返回值函数
3
、根据定义者角色
系统自定义(内置函数)
第三方
(
公司、个人、组织
)
自定义的
4 函数的参数
4.1位置参数
#对于power(x,n)来说有两个参数,调用函数的时候需要依次按照顺序传入两个参数的值
def power(x,n): # x = 4 n =3
s = 1
while n > 0:
n = n -1 # n = 3-1=2 n = 2-1 n = 1-1
s = s * x # s = 1 *4 s = 4*4 s = 16 * 4
return s
print(power(4,3))
4.2默认值参数
默认值参数就是给一个参数设定默认值,如果这个参数没有传入相对应的值,按照默认值进行计
算,如果传入对应的值,按照传入的值进行计算
注意:默认值参数写在后面
def power(x,n=2): # x = 4 n =3
s = 1
while n > 0:
n = n -1 # n = 3-1=2 n = 2-1 n = 1-1
s = s * x # s = 1 *4 s = 4*4 s = 16 * 4
return s
print(power(4))
4.3可变参数
可变参数,
*
表示可变参数
允许调用函数的时候传入
0
个或者任意个参数,系统会将这些参数自动封装成元组
def num(*numbers):
sum = 0
for n in numbers:
sum = sum + n*n
return sum
# print(num([1,2,3,4]))
# print(num((1,2,3,4)))
print(num(1,2,3,4))
print(num(1,2,3))
4.4关键字参数
允许调用函数的时候传入
0
个或者任意个参数,系统会将这些参数自动封装成字典
>>> def person(name,age,**kw):
... print("name:",name,"age:",age,"other:",kw)
...
>>> person("zhangsan",18)
name: zhangsan age: 18 other: {}
>>> person("zhangsan",18,city="Beijing")
name: zhangsan age: 18 other: {'city': 'Beijing'}
>>> person("zhangsan",18,city="Beijing",gender="男")
name: zhangsan age: 18 other: {'city': 'Beijing', 'gender': '男'}
>>> d = {"city":"chongqing","gender":"男"}
>>> person("lisi",20,city=d["city"],gender=d["gender"])
name: lisi age: 20 other: {'city': 'chongqing', 'gender': '男'}
>>> person("lisi",20,**d)
name: lisi age: 20 other: {'city': 'chongqing', 'gender': '男'}
4.5命名关键字参数
>>> def person(name,age,*,city,gender):
... print(name,age,city,gender)
...
>>> person("zhansgan",24,city="beijing",gender="男")
zhansgan 24 beijing 男
#报错
#报错原因:person("zhansgan",24,"beijing","男")报错的原因是没有出现命名关键字,系统默认的是位置参
数,person(name,age,*,city,gender)函数位置参数只有两个,所以会报错
>>> person("zhansgan",24,"beijing","男")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: person() takes 2 positional arguments but 4 were given