欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 第二十六天打卡

第二十六天打卡

2025/5/17 20:21:16 来源:https://blog.csdn.net/weixin_64192256/article/details/148002270  浏览:    关键词:第二十六天打卡

全局变量  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.

@浙大疏锦行

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词