Python编程练习小结

Python编程练习小结

变量是编程中的一个基本概念,用来存储数据。在 Python 中,变量的使用非常灵活,可以存储不同类型的数据,如整数、浮点数、字符串、列表、字典等。以下是 Python 中变量的一些基本用法和规则:

1. 变量的命名规则

  • 变量名必须以字母或下划线 _ 开头,不能以数字开头。
  • 变量名可以包含字母、数字和下划线,但不能包含空格或其他特殊字符。
  • 变量名对大小写敏感,例如 myVarmyvar 是两个不同的变量。

2. 变量的声明和赋值

在 Python 中,无需显式声明变量的类型,只需直接赋值即可创建变量。变量的类型由赋给它的值决定。

# 整数
a = 10
# 浮点数
b = 3.14
# 字符串
c = "Hello, World!"
# 列表
d = [1, 2, 3, 4, 5]
# 字典
e = {"name": "Alice", "age": 25}

3. 变量类型的动态性

Python 是动态类型语言,变量的类型可以在程序运行过程中发生改变。

x = 10       # x 是一个整数
x = "Hello"  # 现在 x 是一个字符串

4. 变量的使用

可以通过变量名来访问和操作存储在变量中的数据。

# 使用变量进行计算
a = 5
b = 3
c = a + b  # c 的值是 8# 使用变量打印输出
print(c)  # 输出 8# 修改变量的值
a = a + 1  # 现在 a 的值是 6
print(a)  # 输出 6

5. 全局变量和局部变量

  • 全局变量:在函数外部定义的变量,可以在整个程序中访问。
  • 局部变量:在函数内部定义的变量,只能在函数内部访问。
# 全局变量
x = 10def my_function():# 局部变量y = 5print("局部变量 y:", y)print("全局变量 x:", x)my_function()
print("全局变量 x:", x)
# print(y)  # 这行会报错,因为 y 是局部变量,无法在函数外部访问

6. 修改全局变量

如果需要在函数内部修改全局变量,可以使用 global 关键字。

x = 10def my_function():global xx = 5  # 修改全局变量 xmy_function()
print("全局变量 x:", x)  # 输出 5

python: 好的,我们继续深入了解 Python 中变量的高级用法和一些最佳实践。

7. 多变量赋值

Python 允许一次性给多个变量赋值,这在某些情况下非常方便。

# 同时给多个变量赋值
a, b, c = 1, 2, 3# 交换两个变量的值
a, b = b, a# 使用列表或元组进行赋值
data = [4, 5, 6]
x, y, z = dataprint(a, b, c)  # 输出:2 1 3
print(x, y, z)  # 输出:4 5 6

8. 解包(Unpacking)

解包是一种从数据结构(如列表、元组或字典)中提取元素并赋值给变量的操作。

# 解包元组
t = (1, 2, 3)
a, b, c = t
print(a, b, c)  # 输出:1 2 3# 解包字典
d = {'name': 'Alice', 'age': 25}
name, age = d.values()
print(name, age)  # 输出:Alice 25# 使用 * 解包剩余元素
numbers = [1, 2, 3, 4, 5]
first, *rest = numbers
print(first)  # 输出:1
print(rest)   # 输出:[2, 3, 4, 5]

9. 变量作用域(Scope)

变量的作用域决定了变量在程序中的可见性和生命周期。主要有以下几种作用域:

  • 局部作用域(Local Scope):在函数内部定义的变量,其作用域仅限于函数内部。
  • 全局作用域(Global Scope):在函数外部定义的变量,可以在整个模块中访问。
  • 内置作用域(Built-in Scope):Python 内置的名字空间,例如 printlen 等函数。
x = "global"def my_function():x = "local"print(x)  # 输出:localmy_function()
print(x)  # 输出:global

使用 nonlocal 关键字可以在嵌套函数中修改外围函数的变量。

def outer_function():x = "outer"def inner_function():nonlocal xx = "inner"print(x)  # 输出:innerinner_function()print(x)  # 输出:innerouter_function()

10. 常量

在 Python 中没有真正的常量,但可以通过约定来定义常量。通常使用全大写字母来表示常量,表示这些变量的值不应改变。

PI = 3.14159
GRAVITY = 9.8# 尽管这只是一个约定,实际上它们的值仍然可以被改变
PI = 3.14  # 不推荐这么做

11. 类型注解(Type Hints)

Python 3.5 引入了类型注解,可以用来明确变量的类型,有助于代码的可读性和静态类型检查。

# 类型注解
a: int = 10
b: float = 3.14
c: str = "Hello"
d: list = [1, 2, 3]
e: dict = {"name": "Alice", "age": 25}# 函数的类型注解
def greet(name: str) -> str:return "Hello, " + nameprint(greet("World"))  # 输出:Hello, World

12. 可变和不可变对象

Python 中的对象分为可变对象和不可变对象。可变对象的值可以改变,而不可变对象一旦创建,其值就不能改变。

  • 不可变对象:整数、浮点数、字符串、元组等。
  • 可变对象:列表、字典、集合等。
# 不可变对象示例
x = 10
x = 20  # 创建了新的整数对象,x 不再指向 10# 可变对象示例
my_list = [1, 2, 3]
my_list.append(4)  # 修改了列表对象

python: 让我们继续深入探讨 Python 中变量的更多高级用法和最佳实践。

13. 变量的生命周期

变量的生命周期指的是变量在内存中存在的时间。在 Python 中,变量的生命周期通常由其作用域决定。

  • 局部变量:在函数执行期间存在,一旦函数执行完毕,局部变量就会被销毁。
  • 全局变量:在整个程序的执行期间存在,直到程序结束或显式删除它。
def my_function():local_var = "I'm local"  # 局部变量print(local_var)my_function()
# print(local_var)  # 这行代码会报错,因为 local_var 已经被销毁

14. 内存管理和垃圾回收

Python 使用自动内存管理和垃圾回收机制来管理变量的内存。Python 的垃圾回收机制主要通过引用计数和循环垃圾收集来实现。

  • 引用计数:每个对象都维护一个引用计数,当引用计数为零时,内存会被释放。
  • 循环垃圾收集:用于检测和处理引用计数无法解决的循环引用问题。
import sysa = []
b = a
print(sys.getrefcount(a))  # 输出 3,因为 a 和 b 都引用了同一个对象,另一个引用来自 getrefcount 的参数del a
print(sys.getrefcount(b))  # 输出 2,因为 a 被删除,但 b 仍然引用对象

15. 全局变量的修改和访问

在函数内部访问和修改全局变量时,需要使用 global 关键字。如果在函数内部修改全局变量而不使用 global,将会创建一个新的局部变量。

x = 10def modify_global():global x

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

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

相关文章

回文串算法题

回文串是一个正着读和反着读顺序一样的字符串。"aba" 是回文串,"abba" 是回文串,"abc" 不是回文串。 回文串的题目,都要使用一个基本的逻辑,就是判断当前这个字符串是不是回文串。以 c 为例&#…

Keras深度学习框架基础第五讲:层接口(layers API)“核心层Core layers”

1、 输入对象 输入对象使用Input 函数。 “Input object” 在编程和机器学习通常指的是一个用于接收数据或参数的输入对象。在 Keras(一个流行的深度学习框架)中,Input 是一个特殊的类,用于实例化一个输入张量(tensor…

六一去哪儿,跟着蒙自源开启一段关于童年记忆与美味奇妙旅程

夏日微风轻拂,童心随风起舞。在这个充满欢声笑语的季节里,蒙自源诚挚地邀请您和您的家人,一同参加为六一儿童节精心准备的庆祝活动,共同开启一段关于童年记忆与美味的奇妙旅程。 从5月25日起,蒙自源的各大门店将化身为…

【R语言入门】 在Anaconda Navigator平台使用R语言编程

R语言入门 - 在Anaconda Navigator平台使用R语言编程 R Essentials - Using R Programming Language on Anaconda Navigator Platform By JacksonML 02/06/2024 1. 安装Anaconda Navigator 为了持续研究数据科学,笔者一开始就在电脑上安装了Jupyter Notebook&am…

services层和controller层

services层 我的理解,services层是编写逻辑代码语句最多的一个层,非常重要,在实际的项目中,负责调用Dao层中的mybatis,在我的项目中它调用的是这两个文件 举例代码如下 package com.example.sfdeliverysystem.servic…

Python 点云快速全局配准算法

点云快速全局配准 一、概述1.1 定义1.2 函数讲解1.3 算法步骤二、代码示例三、运行结果一、概述 1.1 定义 基于特征匹配的快速全局配准算法(Fast Global Registration, FGR):通过计算源点云和目标点云的特征(如ORB、FPFH等特征),再使用特征匹配的方法实现点云之间的配准…

详解 Spark 核心编程之累加器

累加器是分布式共享只写变量 一、累加器功能 ​ 累加器可以用来把 Executor 端的变量信息聚合到 Driver 端。在 Driver 程序中定义的变量,在 Executor 端的每个 Task 都会得到这个变量的一份新的副本,每个 task 更新这些副本的值后,传回 Dri…

LeetCode 两两交换链表中的节点

原题链接24. 两两交换链表中的节点 - 力扣(LeetCode) 思路,请看图片的过程模拟,这里添加了一个哨兵节点0,目的是为了方便操作,得到指向1节点的指针。 class Solution {public:ListNode* swapPairs(ListNod…

天润融通:大模型与生成式AI的融合,开辟零售增长新路径

大模型时代,零售消费企业如何用数智化出奇制胜。 近期,由国内领先的科技产业资本研究平台第一新声举办的“2024年中国CIO数字策略大会”在上海隆重举行。 天润融通消费零售行业顾问颜欣欣先生受邀参与此次大会,并发表了《大模型实践分享:基…

基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细

基于Nginx和Consul构建自动发现的Docker服务架构 文章目录 基于Nginx和Consul构建自动发现的Docker服务架构资源列表基础环境一、安装Docker1.1、Consul节点安装1.2、registrator节点安装 二、案例前知识点2.1、什么是Consul 三、基于Nginx和Consul构建自动发现的Docker服务架构…

智慧商砼搅拌车安监运营管理的创新实践

随着城市化进程的加速,商砼搅拌车作为城市建设的重要设备,其安全管理与运营效率直接关系到工程质量和施工进度。近年来,通过引入先进的4G无线视频智能车载终端套件,我们实现了对商砼搅拌车的高精度定位、实时音视频调度、实时油量…

Matlab2010安装注册+激活(保姆级教程)

目录 一、软件安装 二、软件激活 三、软件测试 Matlab2010压缩包: 链接:https://pan.baidu.com/s/1bX4weZ0nC-4zlDLUiSKcRQ?pwdxljj 提取码:xljj 一、软件安装 1.解压所给压缩包,目录双击setup.exe打开. (如果用户名为中文则会遇到这个…

virtualbox虚拟机、centos7安装增强工具

文章目录 1. virtualBox语言设置2. 设置终端启动快捷键3. 添加virtualbox 增强工具4. 设置共享文件夹 1. virtualBox语言设置 virtualbox -> file -> perferences -> language ->选择对应的语言 -> OK virtualbox -> 管理 -> 全局设定 -> 语言 -> …

Ubuntu server 24 (Linux) 普通用户不能sudo 也不能使用root登录 忘记root密码 修复解决方案

一 普通用户无法sudo,同时也没有其他用户可用 #test用户使用sudo报错,没有权限 testtest:~$ sudo vi /etc/sudoers [sudo] password for test: test is not in the sudoers file. 二 关闭ubuntu 服务器,重新开机 按下ESC 键 1 出现GRUB…

SAP跨服务器传输请求号

环境一、两台服务器并没有维护连接传输线路(DEV和QAS) 环境二、需要将外部公司服务器上的请求号传输到内部服务器中 方式:先从开发环境或服务器中下载请求号,再将请求号上传到目标服务器或环境中,在目标服务器使用ST…

JAVA流程控制do...while循环

1.对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次 2.do...while循环和while循环相似,不同的是,do...whlie循环至少会执行一次 do{ //代码语句 }while(…

KMP(Knuth-Morris-Pratt)算法详解及C++代码实现

在计算机科学中,字符串匹配是一个基础且重要的任务。给定一个主字符串(也称为文本)和一个模式字符串(也称为词),字符串匹配算法的任务是在主字符串中查找与模式字符串相同的子串,并返回其位置。…

【ECMAScript 详解:现代 JavaScript 的核心】

ECMAScript 详解 ECMAScript 是 JavaScript 的官方标准,它定义了 JavaScript 的核心语法和功能。在这篇文章中,我们将深入探讨 ECMAScript 的各个方面,包括历史背景、语言特性、新功能和未来发展趋势。 目录 介绍 什么是 ECMAScript&#x…

[240602] ChatGPT 背后的残酷真相:AI 正以吞噬地球的速度消耗资源 | KEV - 已知漏洞利用目录

目录 ChatGPT 背后的残酷真相:AI 正以吞噬地球的速度消耗资源KEV - 已知漏洞利用目录 ChatGPT 背后的残酷真相:AI 正以吞噬地球的速度消耗资源 主要观点: 科技行业,尤其是像 ChatGPT 这样的大型语言模型,正在消耗大量…

yolov10/v8 loss详解

v10出了就想看看它的loss设计有什么不同,看下来由于v8和v10的loss部分基本一致就放一起了。 v10的论文笔记,还没看的可以看看,初步尝试耗时确实有提升 好记性不如烂笔头,还是得记录一下,以免忘了,废话结束…