优秀的编程知识分享平台

网站首页 > 技术文章 正文

Python自学 从入门到实践 函数(第五章)及 函数复盘

nanyue 2024-10-01 13:08:15 技术文章 5 ℃

本章是学习函数里的 收集参数,以及之前的参数的混合使用

1;什么是收集参数,它可以传递更多个实参

# 只有一个形参,但前面加了一个※
# 这就是收集参数,在调用的时候传入实参的时候可以很多个没问题的都可以返回
def make_pizza(*toppings):
    '''打印顾客点的所有配料 '''
    print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms','green peppers','extra cheese')
def make_pizza(*toppings):
    '''概述制作的披萨'''
    print('\nMaking a pizza with the following toppings:')
    # 遍历 形参*toppings,写到这里的时候实参还没有被填入进去
		# 这里的值是局部变量,在局部变量里可以访问全局变量
    for topping in toppings:
        print(f"-{topping}")

# 下面这些都是全局变量,跳出函数体以外的都是全局变量
make_pizza('pepperoni')
make_pizza('mushrooms','green peppers','extra cheese')

2;结合使用位置实参合任意数量实参 混合使用

写到这里我觉得有必要总结一下:

写在函数体内的是:形参 写在函数体外的是:实参

分类为:

1;位置参数:不加任何符号的

2;关键字参数:在传递实参时指定形参的变量名(a=xxx),位置参数必须在关键字参数前面。

3;默认参数;在函数调用时,如果没有传递实参,则采用默认参数,一般写在形参里,(a=xxx)位置参数必须在默认参数前面

4;收集参数:让客户输入更多参数,用于填入形参,如果收集参数后面还要跟其他参数则建议建议其他参数设置为默认参数,比如print() :收集参数后面跟着都是默参数。

print(*objects,sep='',end='\n',file=sys.stdout,flush=false)

但如果收集参数放在后面问题也不大看看:

# 增加了一个形参
def make_pizza(size,*toppings):
    '''概述要制作的披萨'''
    print(f'\nMaking a{size}-inch pizza with the following toppings:')
    # 循环遍历收集参数的内容
    for topping in toppings:
        print(f'-{topping}')
make_pizza(16,'pepperoni')
make_pizza(12,'moushrooms','green peppers','extra cheese')

3;使用任意数量的关键字实参;

在定义函数的时候使用**参数 相当于建立一个字典。

# ** 创建一个字典的收集形参;
def build_profile( **user_info):
    return user_info

user_profile = build_profile( location='princeton',
                             field='physics')
# 调用函数
print(user_profile)
# ** 创建一个字典的收集形参;
def build_profile(first, last, **user_info):
    """创建一个字典,其中包含我们知道的有关用户的一切"""
    # 字典的名字是user_info
    # 形参成为了字典的值,键是'first_name'
    user_info['first_name'] = first
    user_info['last_name'] = last
		# 注意这里返回的是最后的 字典收集参数
    return user_info

# 传递实参
user_profile = build_profile('albert', 'einstein',
                             location='princeton',
                             field='physics')
# 调用函数
print(user_profile)
# 注意显示的顺序是:先显示字典,因为调用的是字典,
# user_info['first_name'] = first 是添加内容到字典里!! 注意这里

课后题目1:

def smz(*a):
    for i in a:
        print(f'三明治需要的材料有:{i}')


smz('火腿肉','生菜','烤肉酱','面包片')

课后题目二:

# ** 是创建一个字典;
def build_profile(**user_info):
    return user_info

# 传递实参赋值给变量user_profile
user_profile = build_profile(姓='陈',名='二狗',性别='男',爱好='女',年龄=25)
# 调用函数
print(user_profile)
# 这样写就没问题了就OK了,

课后题目三:

def make_car(xinghao,zhizs,**a):
    a['车辆名称']=xinghao
    a['车辆制造商']=zhizs
    return a

car=make_car('宝马','德国',颜色='白色',车辆等级='高级')
print(car)

对前几章的内容复盘:

函数还有一个进阶的内容,这是我个人定义的,就是嗯...有难度的地方:

最近发表
标签列表