编程语言
首页 > 编程语言> > Python进阶_函数

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