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

第二十六天打卡

全局变量  global_var

全局变量是定义在函数、类或者代码块外部的变量,它在整个程序文件内都能被访问。在代码里, global_var 就是一个全局变量,下面是相关代码片段:

print("\n--- 变量作用域示例 ---")
global_var = "我是一个全局变量"
  • 定义位置 : global_var 定义在函数 scope_test 外部,所以它是全局变量。
  • 访问权限 :全局变量可以在函数内部被访问,如在 scope_test 函数里,通过 print(f"在函数内部,也可以看到全局变量: '{global_var}'") 就能访问到 global_var 。
  • 修改规则 :若要在函数内部修改全局变量,需要使用 global 关键字进行声明。在代码里,被注释掉的 global_var = "尝试在函数内修改全局变量" 这行代码,如果没有 global 声明,Python 会创建一个新的局部变量 global_var ,而非修改全局变量。

局部变量  scope_var

局部变量是定义在函数、类或者代码块内部的变量,它只能在定义它的函数、类或者代码块内部被访问。在代码里, local_var 就是一个局部变量,相关代码如下:

def scope_test():local_var = "我是一个局部变量"print(f"在函数内部,可以看到局部变量: '{local_var}'")
  • 定义位置 : local_var 定义在 scope_test 函数内部,所以它是局部变量。
  • 访问权限 :局部变量只能在定义它的函数内部被访问,在 scope_test 函数外部无法访问 local_var 。如果尝试在函数外部访问 local_var ,Python 会抛出 NameError 异常。
  • 生命周期 :局部变量的生命周期从函数开始执行时创建,到函数执行结束时销毁。

总结

全局变量 :定义在函数外部,整个程序都能访问,修改时需在函数内用 global 关键字声明。
局部变量 :定义在函数内部,只能在函数内部访问,函数执行结束后就会被销毁。

参数

.title()

作用是把字符串中每个单词的首字母转换成大写,其余字母转换成小写,最终返回一个新的字符串。

def describe_pet(animal_type, pet_name):"""显示宠物的信息。"""print(f"\n我有一只 {animal_type}.")print(f"我的 {animal_type} 的名字叫 {pet_name.title()}.")describe_pet("猫", "咪咪") # 使用关键字参数,顺序不重要
 *toppings

当函数参数前加上 * 时,这个参数就变成了可变参数。它能接收任意数量的位置参数,并将这些参数收集到一个元组中。在 make_pizza 函数里, *toppings 会把除了 size 之外的所有位置参数收集到一个元组里,这样函数就能处理不同数量的配料了。

    print(f"\n制作一个 {size} 寸的比萨,配料如下:")if toppings: # 只要toppings不为空元组,就会执行for topping in toppings:print(f"- {topping}")else:print("- 原味 (无额外配料)")
  • print(f"\n制作一个 {size} 寸的比萨,配料如下:") :使用 f-string 格式化输出,提示开始制作指定尺寸的披萨。
  • if toppings: :检查 toppings 元组是否为空。如果不为空,说明有额外配料。
  • for topping in toppings: :遍历 toppings 元组中的每个配料。
  • print(f"- {topping}") :输出每个配料的名称。
  • else: :如果 toppings 元组为空,说明没有额外配料,输出“原味 (无额外配料)”。

位置参数和关键词参数区分 

从函数定义角度判断

位置参数 :在函数定义时,没有默认值且位于 *args 之前的参数通常是位置参数。在 process_data 函数里, id_num 和 name 就是位置参数,因为它们没有默认值,并且在 *tags 之前。

def process_data(id_num, name, *tags, status="pending", **details):# ...

关键字参数 :有两种情况。一种是像 status 这种有默认值的参数,它必须通过关键字形式传值,被称为仅关键字参数;另一种是 **details 这种可变关键字参数,它能接收任意数量的关键字参数。
 

从函数调用角度判断

- 位置参数 :在函数调用时,按照函数定义中参数的顺序依次传入,不指定参数名的参数就是位置参数。例如:
 

process_data(103, "Charlie", "admin")

这里的 103 对应 id_num , "Charlie" 对应 name , "admin" 被 *tags 收集,它们都是按照位置传递的,所以是位置参数。

 关键字参数 :在函数调用时,通过 参数名=值 的形式传入的参数就是关键字参数。例如:

process_data(name="David", id_num=104, profession="Engineer")

这里的 name="David" 、 id_num=104 和 profession="Engineer" 都是通过指定参数名来传递的,所以是关键字参数。

 总结

定义时:无默认值且在 *args 前的是位置参数;有默认值或在 * 之后的是关键字参数。
调用时:不指定参数名按顺序传的是位置参数;用 参数名=值 形式传的是关键字参数。

作业

import mathdef calculate_circle_area(radius):try:if radius < 0:return 0else:return math.pi * radius ** 2except Exception:return 0# 计算半径为5、0、-1时候的面积
print(calculate_circle_area(5))
print(calculate_circle_area(0))
print(calculate_circle_area(-1))

def calculate_rectangle_area(length, width):if length < 0 or width < 0:return 0else:return length * width

 

def calculate_average(*args):if not args:return 0total = sum(args)return total / len(args)

 

def print_user_info(user_id, **kwargs):print(f"用户id: {user_id}")for key, value in kwargs.items():print(f"{key}: {value}")

def describe_shape(shape_name, color="black", **kwargs):dimensions_str = ""if kwargs:dim_parts = []for key, value in kwargs.items():dim_parts.append(f"{key}={value}")dimensions_str = ', '.join(dim_parts)else:dimensions_str = "no specific dimensions"return f"A {color} {shape_name} with dimensions: {dimensions_str}"desc1 = describe_shape("circle", radius=5, color="red")
print(desc1)
# 输出: A red circle with dimensions: radius=5desc2 = describe_shape("rectangle", length=10, width=4)
print(desc2)
# 输出: A black rectangle with dimensions: length=10, width=4desc3 = describe_shape("triangle", base=6, height=8, color="blue")
print(desc3)
# 输出: A blue triangle with dimensions: base=6, height=8desc4 = describe_shape("point", color="green")
print(desc4)
# 输出: A green point with no specific dimensions.

@浙大疏锦行

相关文章:

  • python版本管理工具-pyenv轻松切换多个Python版本
  • 求职困境:开发、AI、运维、自动化
  • Java Set系列集合详解:HashSet、LinkedHashSet、TreeSet底层原理与使用场景
  • YOLO+UI(C#)开发
  • 基于MATLAB-GUI图形界面的数字图像处理
  • 服务培训QDA 的安装调试方法,硬件模块的讲解和软件控制台使用及系统测试
  • R1 快开门式压力容器操作证备考练习题及答案
  • java输入输出类
  • 如何排查阻塞语句
  • 【Linux】iptables 命令详解
  • dify知识库支持图文回复实践
  • STM32H743IIT6_ADC采集误差分析与ADC_DMA
  • Stainer Chain的镜像对称性的充分必要条件
  • 建筑设计单位的数据安全如何保护?天锐蓝盾针对性解决方案
  • 【AI模型部署】
  • Linux-进程概念(一)
  • Web-CSS入门
  • 优雅使用Gunicorn进程管理FastAPI
  • buuctf Crypto-摩丝1
  • 矫平机技术新维度:材料科学、数字孪生与零缺陷制造
  • 广州医药集团有限公司原党委书记、董事长李楚源被“双开”
  • 新城市志|GDP万亿城市,一季度如何挑大梁
  • 福州一宋代古墓被指沦为露天厕所,仓山区博物馆:已设置围挡
  • 新修订的《餐饮业促进和经营管理办法》公布,商务部解读
  • 征稿启事|澎湃·镜相第三届非虚构写作大赛暨2026第六届七猫现实题材征文大赛
  • 媒体:中国女排前队长朱婷妹妹被保送浙大受质疑,多方回应