函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。自己也可以创建函数,这被叫做用户自定义函数。
函数的定义:
函数的调用:
函数的调用就是函数加上():fun()
函数的返回值:分别是没有返回值、返回一个值、返回多个值,也关键字return [返回对象]
1.
def func(): # 函数的定义
s = "abc"
for i in s:
print(i * 2) # 打印
ret = func()
print(ret) # None 没有返回值则为None
2.
def func(): # 函数的定义
s = "abc"
for i in s:
print(i * 2) # 打印
return # 加上一个return 没有加上任何对象
ret = func()
print(ret) # 返回的还是None
当函数中遇见return 则就结束函数体
def test():
print("aaa")
return # 程序执行到这里,就结束,后面的代码将不执行
print("bbb")
test() # aaa
def test():
b = 20
c = 30
a,b= b,c
return a # 返回参数a
t = test()
print(t) # 20
返回多个值是也元组的形式进行返回
def test():
b = 20
c = 30
a, b = b, c
return a, b, c
t = test()
print(t) # (20, 30, 30)
1.遇到return,此函数结束,return后面的东西将不会在执行
2.return 返回值
关于返回值:
如果return什么都不写或者干脆就没写return,返回的结果就是None
如果return后面写了一个值,返回给调用者这个值
如果return后面写了多个结果,,返回给调用者一个tuple(元祖),调用者可以直接使用解构获取多个变量
在函数调用的时候具体指定的值,就是参数:
def 函数(参数):
函数体
测试:
def test(x):
print("传递的参数是{}".format(x))
test(12) # 传递的参数是12
参数可以分为:
def max_(x, y):
return x if x > y else y
ret = max_(12, 23) # 按照位置进行传参数
print(ret) # 23
def max_(x, y):
return x if x > y else y
ret = max_(x=12, y=23) # 关键字进行传递参数
print(ret) # 23
def max_(x, y):
return x if x > y else y
ret = max_(12, y=23) # 位置参数和关键字参数混合在一起使用
print(ret) # 23
注意:位置参数必须在关键字参数的前面,对于一个形参只能赋值一次
def max_(x, y):
return x if x > y else y
ret = max_(12, 23)
print(ret) # 23
如果不传递参数
def max_(x, y):
return x if x > y else y
ret = max_() # TypeError: max_() missing 2 required positional arguments: 'x' and 'y'
print(ret
def max_(x, y = 20): # y = 20 默认参数
return x if x > y else y
ret = max_(10)
print(ret) # 20
ret1 = max_(10, 30)
print(ret1) # 30
默认参数如果是一个可变的数据类型
def append_(l, li=[]):
li.append(l)
print(li)
append_(2)
append_(3)
append_(4)
append_("abcd")
append_([45,45]) # [2, 3, 4, 'abcd', [45, 45]]
def test(*args, **kwargs):
print(args)
print(kwargs)
test(1,2,3,4,"abdas", False, True, (78, "abc"), name ="Yang", age = 78) #
# (1, 2, 3, 4, 'abdas', False, True, (78, 'abc'))
# {'name': 'Yang', 'age': 78}
关于*args和**kwargs中打散和聚合的问题
def test1(a, b, d=0, *args, c=1, **kwargs): # 将数据放在*args之前,关键字参数会被替换
print(a, b, c, args, kwargs, d) # 将数据放在**kwargs之前,关键字参数是默认参数
# 1 2 1 (5, 6) {'r': 2, 'y': 78} 3
print(*args) # 元组打散 5 6
print(*kwargs) # 打散 返回key r y
test1(1, 2, 3, 5, 6, r=2, y=78)
********************************************************************
dic = {"a": "b"}
def test(**kwargs):
print(kwargs) # {"a": "b"}
print(*kwargs) # "a"
test(**dic) # a=b
li = [1, 3, 2]
def test(*args): #
print(args) # args:(1, 3, 2)
print(*args) # args:1 3 2
test(*li) # 1 3 2
原文:https://www.cnblogs.com/yangchangjie150330/p/10523896.html