函数是组织好的,可以重复使用,用起来功能单一
函数提供应用模块性和代码的重复利用率
print("-----1.定义一个函数------")
def hello(str):
"我的第一个定义函数"
print("传递过来的数据为", str)
return
hello('生活不容易,不能放弃希望,相信自己还能干10年')
# 计算面积函数
def area(width, height):
return width * height
w = 5
h = 7
print('width=', w, 'height', h, 'area=', area(w, h))
打印:
-----1.定义一个函数------
传递过来的数据为 生活不容易,不能放弃希望,相信自己还能干10年
width= 5 height 7 area= 35
我们还可以在函数上加上解释,例如:
def printme(str):
"打印任何一个"
print(str)
return
printme(123)
函数中不可变参数传递包括string number tuple
# 不可变参数传递 number,string,tuple
def change(a):
a = 11
b = 2
change(b)
print(b)
打印:
2
可以看到实例中有 int 对象 2,指向它的变量是 b,在传递给 ChangeInt 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 Int 对象,在 a=11 时,则新生成一个 int 值对象 11,并让 a 指向它。
包括 list set dictionary
可变参数会改变内部的值
例子:
# 可变参数对象传递 list set dictionary
def chanageme(mylist):
"append list "
mylist.append([1, 3, 4, 5])
print("函数内的列表打印:", mylist)
return
mylist = [12, 53, 123]
chanageme(mylist)
print("函数外的值打印:", mylist)
打印:
函数内的列表打印: [12, 53, 123, [1, 3, 4, 5]]
函数外的值打印: [12, 53, 123, [1, 3, 4, 5]]
关键字参数在调用的时候 变量[var] = 值[value],且可以按照不指定函数顺序
def printInfo(name, age):
"打印年龄和姓名"
print("年龄=", age)
print("姓名=", name)
return
printInfo(age=12, name='shasha')
打印:
年龄= 12
姓名= shasha
调用函数时,如果没有传递参数,则会使用默认参数
def printInfo(name, age=34):
"打印年龄和姓名"
print("年龄=", age)
print("姓名=", name)
return
printInfo(name='shasha')
打印:
年龄= 34
姓名= shasha
可以看到,年龄使用了默认年龄34岁
可变长参数,有时候可能处理的时候比声明更多的参数 加*星号 会以元组tuple导入,存放未命名的参数
def print10(arg1, *vartuple):
"打印任何传入参数"
print("输出:")
print(arg1)
print(vartuple)
return
print10(69, 12, 213)
print10(50)
打印:
输出:
69
(12, 213)
输出:
50
()
还有一种是双星**,其实是以字典的形式导入
def print11(arg1, **argss):
"函数打印。。。"
print("输出:")
print(arg1)
print(argss)
return
print11(1, a=2, b=3)
打印:
输出:
1
{'a': 2, 'b': 3}
其实就是lambda
print('-------匿名函数-------')
sum = lambda a, b: a + b
print("相加侯的值为:", sum(12, 32))
print("相加侯的值为:", sum(20, 20))
打印:
-------匿名函数-------
相加侯的值为: 44
相加侯的值为: 40
匿名函数只能是简单的表达式,复杂的最好不要使用
这个是 python3.8才有的一个特性,/ 用来指定函数形参必须使用指定位置参数,不能使用关键字参数形式
def f(a, bd, /, c, d):
print(a,bd,c,d)
return
f(12, 2, 4, 5)
打印:
12 2 4 5
end!