Python进阶_函数
作者:互联网
# @Time:2020/12/18 15:37
# @Author:李 祥
# @File:function2.py
# @Software:PyCharm
# 函数的定义
def func(): # 见名知意
pass # 占位
# 函数的调用
func()
print(id(func()), type(func))
# 函数名也可以作为变量进行赋值\传递\储存
def func1():
print("func1")
def func2():
print("func2")
res = func1
print(id(res), id(func1))
res()
myfuncs = [func1, func2]
for i in myfuncs:
i()
# 2.参数
# 【位置参数】普通参数
def printInfo(a, b):
print(a, b)
printInfo(10, 20)
# printInfo(10, 20, 30) # 使用位置参数时,数量要一致,否则报错
# 【默认参数】有默认值
# 形式参数 在 默认参数 前
def printInfo(name, age=18):
print(f"name:{name}, age:{age}")
printInfo("张三", 20)
printInfo("李四") # 没有给定实际参数时,会给定默认值
# 【指定参数名复制】 函数调用时,根据参数名,进行针对性赋值
def printInfo(name="张三", age=18):
print(f"name:{name}, age:{age}")
printInfo(age=20, name="李四") # 指定形参变量名, 可以不按照位置顺序传递参数
printInfo("李四", age=20)
# printInfo(age = 20, "李四") # 如果混用, 位置实参 在 关键字实参 前面
# 可变参数
# *args arguments 可变参数
# **kwargs keyword arguments 关键字参数
# * 和 ** 将多个变量进行"打包",变为元组或字典
def printInfo(name, age, *args):
print(f"name:{name}, age:{age}")
print(args, type(args))
printInfo("张三", 18, 22, "憨憨")
def printInfo(name, age, **kwargs):
print(f"name:{name}, age:{age}")
print(kwargs, type(kwargs))
printInfo("张三", 18, city="Beijing", sex="man")
# 在”函数调用“时,*和**的作用是:”解包“。
# 符号 * 将传进来的字符串、元组、列表、集合转化为多个标准参数
# 符号 ** 将传进来的字典,转化为多个关键字参数
def printInfo(name, age, *args):
print(f"name:{name}, age:{age}")
print(args, type(args))
rate = [8, 9, 10]
rate = (8, 9, 10)
rate = {8, 9, 10} # 无序
printInfo("张三", 18, *rate)
def printInfo(name, age, **kwargs):
print(f"name:{name}, age:{age}")
print(kwargs, type(kwargs))
info = {"city": "Beijing", "sex": "man"}
printInfo("张三", 18, **info)
# 函数调用时,参数传递的顺序:
# 调用时---> 实际参数,位置参数,关键字参数
# 顺序: args , *args, **kwargs
def testArgs(a, b, c=10, d=20, *args, **kwargs):
print(f"a={a},b={b},c={c},d={d},args={args},kwargs={kwargs}")
testArgs(1, 2, 3, 4, 5, 6, 7, x=100, y=200)
def testArgs(*args, a, b, c=10, d=20, **kwargs): # 可变参数在最前面时,匹配到关键字赋值的其他实际参数
print(f"a={a},b={b},c={c},d={d},args={args},kwargs={kwargs}")
testArgs(1, 2, 3, 4, 5, a=6, c=100, b=7, x=100, y=200)
# 命名关键字参数
# *后面的参数,被称为‘命名关键字参数’
def testStar(a, b, c, *, name, age):
print(f"a={a},b={b},c={c},name={name},age={age}")
testStar(1, 2, 3, name="张三", age=30) # *的作用,表示*后面的参数必须使用命名的方式来进行参数赋值
# 3.返回值
def test():
pass
# return 可返回所有类型
res = test()
print(res, type(res))
# 多个返回值
# 将多个返回值,封装在列表,字典,元组容器中。(set会改变顺序)
def divid(a, b):
return [a, b]
def divid2(a, b, c):
return a, b, b # 返回元组
res = divid2(1, 2, 3)
print(res)
标签:进阶,Python,age,args,printInfo,函数,print,def,name 来源: https://blog.csdn.net/LibraSolo/article/details/111384461