当前位置: 首页 > news >正文

PYTHON训练营DAY29(补)

# 带默认值的参数必须放在没有默认值的参数之后

一、函数的参数类型

(一)位置参数

场景:点奶茶时,店员会按顺序问你三个问题:

  1. 尺寸?(小杯 / 中杯 / 大杯)

  2. 配料?(珍珠 / 椰果 / 布丁)

  3. 几分糖?(无糖 / 三分 / 五分 / 全糖)

关键点

  • 必须按顺序回答,不能跳过或颠倒。

  • 如果只回答了两个问题,店员会懵圈(报错)

def order_milk_tea(size, topping, sugar):return f"您点了{size},加{topping},{sugar}糖。"# 调用时按位置传递参数
order_milk_tea("大杯", "珍珠", "三分")  # 正确
order_milk_tea("珍珠", "三分", "大杯")  # 错误!顺序错乱
order_milk_tea("中杯", "布丁")          # 错误!缺少参数

但是,关键字参数可以不用按照顺序来

场景:填写在线表格

  • 位置参数:必须按固定顺序填写(如先填姓名,再填年龄,最后填城市)。

  • 关键字参数:可以随意顺序填写(如先填城市,再填姓名,最后填年龄),只要标明每个字段的名称

# 函数定义(参数名是关键)
def register_user(name, age, city):return f"{name},{age}岁,住在{city}。"# 关键字参数调用(位置不重要)
register_user(city="上海", name="李四", age=30)  # 正确!

(二)默认参数

带默认值的参数必须放在没有默认值的参数之后

def describe_pet_default(pet_name, animal_type="狗"): # animal_type 有默认值"""显示宠物的信息,动物类型默认为狗。"""print(f"我有一只 {animal_type}.")print(f"我的 {animal_type} 的名字叫 {pet_name.title()}.")describe_pet_default(pet_name="小黑") # animal_type 使用默认值 "狗"
describe_pet_default(pet_name="雪球", animal_type="仓鼠") # 提供 animal_type,覆盖默认值
# 注意:带默认值的参数必须放在没有默认值的参数之后

(三)args

  • *args 会将多余的位置参数收集为一个元组(tuple)。

  • 常用于不确定会传入多少个参数的场景

def print_info(name, *args):print(f"姓名:{name}")print(f"其他信息:{args}")  # 多余的参数被收集到args中print_info("张三", 25, "北京", "工程师")
# 输出:
# 姓名:张三
# 其他信息:(25, '北京', '工程师')

(四)kwargs

  • **kwargs 会将多余的关键字参数收集为一个字典(dict)。

  • 常用于不确定会传入哪些关键字参数的场景

def print_user_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_user_info(name="李四", age=30, city="上海")
# 输出:
# name: 李四
# age: 30
# city: 上海

二、变量作用域

区分全局变量和局部变量

x = 10  # 全局变量(模块顶层定义)def func():y = 20  # 局部变量(函数内部定义)print(x)  # 可以访问全局变量 xprint(y)  # 可以访问局部变量 yfunc()
print(x)  # 可以访问全局变量 x
print(y)  # 报错:无法访问局部变量 y

局部变量

def calculate():x = 10  # 局部变量print(x)  # 正确:函数内部可以访问 xcalculate()  # 输出:10
print(x)     # 错误:函数外部无法访问 x

全局变量

x = 10  # 全局变量def read_global():print(x)  # 正确:函数内部可以读取全局变量def modify_global_error():x = 20  # 这里会创建一个新的局部变量 x,而非修改全局 xdef modify_global_correct():global x  # 声明要修改全局变量x = 20    # 正确:修改全局变量read_global()       # 输出:10
modify_global_error()
read_global()       # 输出:10(全局变量未被修改)
modify_global_correct()
read_global()       # 输出:20(全局变量被修改)

相关文章:

  • uniapp实现大视频文件上传-- 阿里云oss直传方式 - app、H5、微信小程序
  • SQL语句面试题
  • 整平机:工业制造中的关键设备
  • Chrome 插件网络请求的全面指南
  • Chrome 缓存文件路径
  • 基于B/S架构的质量监督检验报告自动生成管理系统有何亮点?
  • 系统性能分析基本概念(2):性能模型
  • 每日Prompt:像素风格插画
  • 一、web安全基础入门
  • MLpack 开源库介绍与使用指南
  • 实现了TCP的单向通信
  • 征程 6 J6E/M linear 双int16量化支持替代方案
  • 野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(四)安装RKNN Toolkit2
  • Java—— IO流 第三期
  • 基于 AMDXCVU47P HBM2 FPGA 的 2 路 100G 光纤 PCIe 高性能计算加速卡
  • redis Pub/Sub 简介 -16 (PUBLISH、SUBSCRIBE、PSUBSCRIBE)
  • Linux 强制访问控制深度解析:机制、比较与战略部署
  • 【VLNs篇】05:TGS-在无地图室外环境中使用视觉语言模型进行轨迹生成和选择
  • 基于FPGA控制电容阵列与最小反射算法的差分探头优化设计
  • dlib库的人脸检测案例实现
  • 本地网站建设流程/关键词你们懂的
  • 网站添加留言板功能/谷歌优化工具
  • 公司网站制作流程2016/深圳百度推广
  • 专业的网站建设设计价格/seo提供服务
  • 阿里云做企业网站/聊城优化seo
  • 网站建设培训龙岗/信息流广告