第二十六天打卡

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

@浙大疏锦行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/905736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

联合查询

目录 1、笛卡尔积 2、联合查询 2.1、内连接 2.2、外连接 1、笛卡尔积 笛卡尔积&#xff1a; 笛卡尔积是让两个表通过排列组合的方式&#xff0c;得到的一个更大的表。笛卡尔积的列数&#xff0c;是这两个表的列数相加&#xff0c;笛卡尔积的行数&#xff0c;是这两个表的行…

【HTML5学习笔记2】html标签(下)

1表格标签 1.1表格作用 显示数据 1.2基本语法 <table><tr> 一行<td>单元格1</td></tr> </table> 1.3表头单元格标签 表头单元格会加粗并且居中 <table><tr> 一行<th>单元格1</th></tr> </table&g…

window 显示驱动开发-分页视频内存资源

与 Microsoft Windows 2000 显示驱动程序模型不同&#xff0c;Windows Vista 显示驱动程序模型允许创建比可用物理视频内存总量更多的视频内存资源&#xff0c;然后根据需要分页进出视频内存。 换句话说&#xff0c;并非所有视频内存资源都同时位于视频内存中。 GPU 的管道中可…

《C 语言指针高级指南:字符、数组、函数指针的进阶攻略》

目录 一. 字符指针变量 二. 数组指针变量 三. 二维数组传参 3.1 二维数组的本质 3.2 访问方式与地址计算 3.3 二维数组的传参方式 3.4 深入解析 *(*(arri)j) 与 arr[i][j] 的等价性 四. 函数指针变量 4.1 函数指针变量的创建 4.2 函数指针变量的使用 4.3 两段"…

Unity:场景管理系统 —— SceneManagement 模块

目录 &#x1f3ac; 什么是 Scene&#xff08;场景&#xff09;&#xff1f; Unity 项目中的 Scene 通常负责什么&#xff1f; &#x1f30d; 一个 Scene 包含哪些元素&#xff1f; Scene 的切换与管理 &#x1f4c1; 如何创建与管理 Scenes&#xff1f; 什么是Scene Man…

内容中台重构企业知识管理路径

智能元数据驱动知识治理 现代企业知识管理的核心挑战在于海量非结构化数据的有效治理。通过智能元数据分类引擎&#xff0c;系统可自动识别文档属性并生成多维标签体系&#xff0c;例如将技术手册按产品版本、功能模块、适用场景进行动态标注。这种动态元数据框架不仅支持跨部…

Vue3:脚手架

工程环境配置 1.安装nodejs 这里我已经安装过了&#xff0c;只需要打开链接Node.js — Run JavaScript Everywhere直接下载nodejs&#xff0c;安装直接一直下一步下一步 安装完成之后我们来使用电脑的命令行窗口检查一下版本 查看npm源 这里npm源的地址是淘宝的源&#xff0…

悦数图数据库一体机发布,让复杂关联计算开箱即用

在金融风控、政务治理、能源监测等关键领域&#xff0c;复杂数据关联分析已成为业务决策的核心需求。然而&#xff0c;信创场景的特殊性——全栈自主可控、海量实时计算、系统高可用性——对传统技术架构提出了近乎苛刻的要求。悦数图数据库一体机应运而生&#xff0c;以软硬协…

收放卷“材料停机减速距离“计算FC(算法公式+ST源代码+C++代码)

PLC运动控制基础系列之梯形速度曲线 PLC运动控制基础系列之梯形速度曲线_三菱运动控制模块梯形加减速-CSDN博客文章浏览阅读3.2k次,点赞3次,收藏7次。本文是关于PLC运动控制的基础教程,重点介绍了梯形速度曲线的概念、计算和应用。讨论了梯形加减速在启动和停止阶段的作用,…

Centos7系统(最小化安装)安装zabbix7版本详细文章、nginx源代码配置、php源代码、mysql-yum安装

zabbix官网链接下载zabbix源代码安装包 选择zabbix版本&#xff08;此文章使用zabbix7.0版本&#xff09; 安装之前由于是最小化安装centos7安装一些开发环境和工具包 文章使用国内阿里源 cd /etc/yum.repos.d/;curl -O https://mirrors.aliyun.com/repo/epel-7.repo;curl -…

描述性统计图表

一、核心图表类型与用途 1、直方图(Histogram) (1)定义:用连续矩形表示数据分布,横轴为数据区间,纵轴为频数或频率。 (2)用途:展示数据分布形态(对称、偏态)、识别离群值。 (3)适用场景:分析连续型变量的分布特征,如收入分布、考试成绩分布。 2、箱线图(Box P…

ThinkPad X250电池换电池芯(理论技术储备)

参考&#xff1a;笔记本电池换电芯的经验与心得分享 - 经典ThinkPad专区 - 专门网 换电池芯&#xff0c;需要克服以下问题&#xff1a; 1 拆电池。由于是超声波焊接&#xff0c;拆解比较费力&#xff0c;如果暴力撬&#xff0c;有可能导致电池壳变形... 2 替换电池芯的时候如…

Java(基础) day01 初识Java

目录 一、运行Java程序 二、基本数据类型 1、整数类型 ​编辑2、浮点型 3、字符型 4、布尔类型 一、运行Java程序 Java是一门半编译型、半解释型语言。先通过javac编译程序把xxx.java源文件进行编译&#xff0c;编译后生成的.class文件是由字节码组成的平台无关、面向JVM的文…

【美团】Java后端一面复盘|网络+线程+MySQL+Redis+设计模式+手撕算法

&#x1f4cd; 面试公司&#xff1a;美团 &#x1f3af; 面试岗位&#xff1a;Java后端开发工程师 &#x1f4de; 面试形式&#xff1a;电话面试 &#x1f552; 面试时长&#xff1a;约 50 分钟 &#x1f501; 面试轮次&#xff1a;第一轮技术面 ✨ 面试整体节奏&#xff1a; …

Go语言八股文之Mysql锁详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

实战案例:采集 51job 企业招聘信息

本文将带你从零开始&#xff0c;借助 Feapder 快速搭建一个企业级招聘信息数据管道。在“基础概念”部分&#xff0c;我们先了解什么是数据管道和 Feapder&#xff1b;“生动比喻”用日常场景帮助你快速理解爬虫组件&#xff1b;“技术场景”介绍本项目中如何使用代理等采集策略…

GMT之Bash语言使用

GMT的操作有自己的逻辑和“命令”&#xff0c;但GMT是可以用Bash语言控制的&#xff0c;所以常常以.sh为后缀写GMT程序。 GMT程序运行步骤如下&#xff1a; 采用cd &#xff0c;定位到指定文件夹&#xff1b;以sh ***.sh运行GMT&#xff0c;得到结果。 另外&#xff0c;遇到…

整合Redis

整合Redis 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency><groupId>org.apache.commons</groupId><art…

Vue3——Watch侦听器

目录 手动指定监听对象 侦听ref对象 侦听ref对象中的某个属性 reactive写法 watchEffect 自动侦听 多源侦听 一次性侦听器 watch 是⼀个⽤于观察和响应Vue响应式系统中数据变化的⽅法。它允许你指定⼀个数据源&#xff08;可以是 响应式引⽤、计算属性、组件的属性等&#xf…

1、数据结构与算法(Python版-啃书)-绪论

1.1 计算机问题求解 一般而言&#xff0c;人们需要的不是解决一个具体问题的程序&#xff0c;而是解决一类问题的程序。 对于求平方根这样的简单问题&#xff0c;人们希望的也不是专用于求某个数(例如2)的平方根的函数&#xff0c;而是能求任何数的平方根的函数。 用计算机解…