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

python打卡day26

函数、参数、变量

知识点回顾:

  1. 函数的定义
  2. 变量作用域:局部变量和全局变量
  3. 函数的参数类型:位置参数、默认参数、不定参数
  4. 传递参数的手段:关键词参数
  5. 传递参数的顺序:同时出现三种参数类型时
def function_name(parameter1, parameter2, ...):"""Docstring: 描述函数的功能、参数和返回值 (可选但强烈推荐)"""# 函数体: 实现功能的代码# ...return value # 可选,用于返回结果

函数的基本写法如上,注意冒号、缩进、三引号包起来的注释,函数的参数我们有如下称呼:

  • Parameters (形参): 在函数定义中列出的变量名 (如 name, feature1, feature2)。
  • Arguments (实参): 在函数调用时传递给函数的实际值 (如 "张三", 10, 25),也就是实际的数值(实参)传给了 形参(定义时候的变量)

但是形参/实参还有更具体的参数类型:

  • 位置参数 (Positional Arguments): 调用时按顺序匹配,也可以说是普通形参
  • 默认参数值 (Default Parameter Values): 定义函数时给参数指定默认值,调用时如果未提供该参数,则使用默认值      注意点:带默认值的参数必须放在没有默认值的参数之后
  • 可变数量参数 (*args 和 **kwargs):

            - *args: 将多余的位置参数收集为一个元组

            - **kwargs: 将多余的关键字参数收集为一个字典

Python 先用传的参数按顺序填满普通参数,如果还有剩下的位置参数,全部塞进 *args 这个元组里,如果没多余参数,*args 就是个空元组 ()

def make_pizza(size, *toppings):"""概述要制作的比萨。*toppings 会将所有额外的位置参数收集到一个元组中。"""print(f"\n制作一个 {size} 寸的比萨,配料如下:")if toppings: # 只要toppings不为空元组,就会执行for topping in toppings:print(f"- {topping}")else:print("- 原味 (无额外配料)")make_pizza(12, "蘑菇")
make_pizza(16, "香肠", "青椒", "洋葱")
make_pizza(9) # toppings 会是空元组# ---------- 结果如下 -----------
制作一个 12 寸的比萨,配料如下:
- 蘑菇制作一个 16 寸的比萨,配料如下:
- 香肠
- 青椒
- 洋葱制作一个 9 寸的比萨,配料如下:
- 原味 (无额外配料)

Python 先处理所有位置参数(包括普通参数和*args),把能匹配普通参数名的关键字参数用掉,剩下的所有 参数名=值 都塞进 **kwargs 这个字典里

def build_profile(first_name, last_name, **user_info):"""创建一个字典,其中包含我们知道的有关用户的一切。**user_info 会将所有额外的关键字参数收集到一个字典中。"""profile = {}profile['first_name'] = first_nameprofile['last_name'] = last_namefor key, value in user_info.items():profile[key] = valuereturn profileuser_profile = build_profile('爱因斯坦', '阿尔伯特',location='普林斯顿',field='物理学',hobby='小提琴')
print(f"\n用户信息: {user_profile}")# ------------ 结果如下 --------------
用户信息:{'first_name': '爱因斯坦', 'last_name': '阿尔伯特', 'location': '普林斯顿', 'field': '物理学', 'hobby': '小提琴'}

关键字参数 (Keyword Arguments)并非是一种参数,而是一种传递参数的手段: 调用时通过 参数名=值 的形式指定,可以不按顺序。他可以传位置参数的值,也可以传默认参数的值,也可以传可变参数的值,也可以传关键字参数的值。为了可读性,更推荐对所有参数均采取关键字参数传递

假设一个复杂的绘图函数
plot_data(data, x_col, y_col, "blue", "-", True, False, "My Plot", "X-axis", "Y-axis") # 不清晰使用关键字参数
plot_data(data=my_data, x_column='time', y_column='value',color='blue', linestyle='-', show_grid=True, use_log_scale=False,title="My Awesome Plot", xlabel="Time (s)", ylabel="Value") # 非常清晰

- 局部变量 (Local Variables): 在函数内部定义的变量,只在该函数内部有效。当函数执行完毕后,局部变量通常会被销毁

- 全局变量 (Global Variables): 在所有函数外部定义的变量,可以在程序的任何地方被访问(但在函数内部修改全局变量需要特殊声明,如 global 关键字,初学阶段可以先避免)

收获心得:

还有几道作业就没放上来了,说实话大部分概念都是之前接触C或者C++见过并且熟知的,就是*args 和 **kwargs需要稍微注意一下

@浙大疏锦行

相关文章:

  • 如何在线免费压缩PDF文档?
  • 【MySQL】多表连接查询
  • 各个历史版本mysql/tomcat/Redis/Jdk/Apache/gitlab下载地址
  • 2024年9月电子学会等级考试五级第三题——整数分解
  • 【蓝桥杯省赛真题49】python偶数 第十五届蓝桥杯青少组Python编程省赛真题解析
  • zynq嵌入式linux启动默认设置
  • 钉钉数据与金蝶云星空的无缝集成解决方案
  • 嵌入式开发学习日志(数据结构--双链表)Day21
  • C++ QT图片查看器
  • 掘金中亚货代蓝海,易境通货代系统解锁数字化制胜密码!
  • Python实战案例:打造趣味猜拳小游戏
  • 山东大学计算机图形学期末复习整理5——CG10上
  • 司法系统之外的第三方平台未经许可披露企业涉诉信息是否构成侵权
  • CodeBuddy编程新范式
  • 动态规划-状态压缩DP
  • Java并发编程:synchronized机制
  • vue2 根据不同路由url设置不同的网页背景颜色
  • android display 笔记(十四)VAU 和GSP 分别代表什么
  • 谷歌量子计算机:开启计算新纪元
  • 鸿蒙OSUniApp 实现的表单验证与提交功能#三方框架 #Uniapp
  • 戛纳打破“疑罪从无”惯例,一法国男演员被拒之门外
  • 自然资源部:不动产登记累计化解遗留问题房屋2000多万套
  • 中央军委决定调整组建3所军队院校
  • 习近平会见哥伦比亚总统佩特罗
  • 北斗专访|特赞科技范凌:现在AI主要是“说话”,接下来要“干活”了
  • 马上评丨岂能为流量拿自己的生命开玩笑