在 Python 中,标识符是用来标识变量、函数、类、模块或其他用户定义的对象的名称。标识符是程序员自定义的名称,用于在代码中标识不同的实体,使得代码可读性更强,更易于理解和维护。标识符需要遵循一些规则和约定。
if
、for
、while
、def
等。my_variable
。MyClass
。(大驼峰)_private_variable
。以下是一些有效的 Python 标识符的示例
my_variable = 42
user_name = "John Doe"
total_count = 100
MyClass = MyClass()
_my_private_variable = "private"
请注意,虽然标识符是用来标识名称的,但标识符本身并没有任何含义,程序员需要根据具体情况赋予标识符有意义的名称,以便更好地理解代码的含义和逻辑。
在 Python 中,关键字(Keyword)是被编程语言保留并具有特定用途的标识符。这些关键字有固定的含义和功能,不能用作变量名、函数名或其他用户自定义标识符的名称。
关键字在 Python 解释器中具有特殊的意义,用于构建语法结构和实现核心功能。以下是 Python 的关键字列表:
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
请注意,这里列出的关键字适用于 Python 3.x 版本。不同的 Python 版本可能会有不同的关键字集合,所以在不同的 Python 版本中应该注意关键字的差异。关键字不能用作变量名或其他标识符,例如以下的代码将导致语法错误:
for = 10 # 无效,"for" 是关键字,不能用作变量名
def = "hello" # 无效,"def" 是关键字,不能用作变量名
使用合适的标识符和避免与关键字冲突,有助于编写更清晰、可读性更高的代码。如果您不确定某个标识符是否是关键字,您可以查看 Python 官方文档中的关键字列表,或在 Python 解释器中使用
help("keywords")
命令查看关键字列表。
若是使用字符串作为参数传入help函数的话,help函数会自动提取字符串中的内容,获取对应的帮助信息,如果不传如字符串值的话,除了 __builtins__ 全局命名空间中的属性外,其他均需手动导入,否则不识别
推荐使用字符串往help函数中传值
在 Python 中,help()
是一个内置函数,用于获取对象的帮助信息和文档字符串(Docstring)。help()
函数提供了一个简单的交互式方式来查询 Python 对象(如模块、函数、类等)的用法和说明。
使用 help()
函数的方式非常简单,只需在交互式 Python 解释器或脚本中调用该函数并传入要查询的对象作为参数。例如:
# 查询内置函数的帮助信息
help(print)
# 查询模块的帮助信息
import math
help(math)
# 查询类的帮助信息
help(list)
# 查询函数的帮助信息
def my_function(x, y):
"""这是一个自定义函数的文档字符串。"""
return x + y
help(my_function)
help()
函数会显示对象的说明、参数列表、返回值以及其他相关信息。对于内置函数、标准库模块以及自定义函数和类,编写良好的文档字符串是一个良好的实践,它有助于提高代码的可读性和维护性,并方便其他开发者了解和使用代码。
需要注意的是,并不是所有的 Python 对象都有文档字符串或帮助信息。有些对象可能没有相关的文档说明,此时 help()
函数将显示一个简单的默认帮助信息。在编写自己的函数和类时,建议添加清晰的文档字符串,以便其他人可以方便地使用 help()
函数查看相关信息。
在 Python 中,字面值(Literal)是指直接表示特定值的代码表达式。字面值是数据的固定值,它们是程序中的常量,不可更改。在编程中,您可以直接使用字面值来表示不同类型的数据。以下是 Python 中常见的字面值类型:
表示整数值。例如:
42
,-10
,0
.
表示浮点数值,即带有小数点的数值。例如:
3.14
,-2.5
,0.0
.
表示字符串值,用单引号或双引号括起来。例如:
'Hello'
,"Python"
,'123'
.
表示布尔值,只有两个取值:
True
和False
.
表示空值或空对象,用于表示变量没有被赋值。例如:
None
.
表示列表,用方括号括起来,包含多个元素,元素之间用逗号分隔。例如:
[1, 2, 3]
,['a', 'b', 'c']
.
表示元组,用圆括号括起来,包含多个元素,元素之间用逗号分隔。例如:
(1, 2, 3)
,('x', 'y', 'z')
.
表示字典,用花括号括起来,包含多个键值对,每个键值对由键和值用冒号分隔。例如:
{'name': 'John', 'age': 30}
.
表示集合,用花括号括起来,包含多个元素,元素之间用逗号分隔。例如:
{1, 2, 3}
,{'apple', 'orange'}
.
字面值是 Python 中的基础数据表示形式,它们在代码中直接表示了特定的数据值。在使用字面值时,注意符合正确的语法和数据类型,以便程序正确执行。
Python中不区分单引号和双引号,字符串型字面值和字符型字面值都可以使用单引号或双引号括起来
不同的数据类型在内存开辟的空间是不一样的,数据类型的作用就是指导在内存中开辟多大的空间
在 Python 中,声明变量是通过给变量名赋值来实现的。Python 是一种动态类型语言,因此在声明变量时无需显式指定变量的类型。变量的类型是根据赋值的数据类型自动确定的。
变量名 = 值
变量名:符合语法规则的标识符(所有字母小写,多个单词间使用_分隔)
变量名 = 字面值(值)
= 等号是一个运算符,叫做赋值运算符,赋值运算符先运算等号右边的表达式,表达式执行结束之后的结果赋值给左边的变量
注意:
理解为:同一作用域下,变量声明一次,可以多次重新赋值,变量的值可变化
实际上,在 Python 中,同一个作用域(例如函数内部或全局作用域)中可以多次声明同一个变量名,并且后面的声明会覆盖前面的声明。
这意味着,如果在同一个作用域内多次声明同一个变量名,Python 将使用最后一次声明的值作为该变量的值。这与一些其他编程语言不同,例如C或Java,它们不允许在同一个作用域中重复声明同一个变量名。
需要注意的是,虽然在同一个作用域内可以多次声明同一个变量名,但这样做可能会使代码变得难以理解和维护,因此最好避免这种做法,尽量使用不同的变量名来表示不同的数据。
有了变量的概念之后,内存空间得到了重复的使用
在 Python 中,可以使用逗号将多个变量在一行中进行声明和赋值。这被称为多个变量的同时赋值。在这种方式下,多个变量名用逗号分隔,对应的值也用逗号分隔,从左到右一一对应。
以下是一些示例:
# 一行中声明和赋值多个整数变量
x, y, z = 1, 2, 3
# 一行中声明和赋值多个字符串变量
name, city, country = "John", "New York", "USA"
# 一行中声明和赋值多个列表变量
numbers, fruits, colors = [1, 2, 3], ['apple', 'banana', 'orange'], ['red', 'green', 'blue']
# 一行中声明和赋值多个元组变量
point1, point2 = (10, 20), (30, 40)
# 一行中声明和赋值多个字典变量
person1, person2 = {"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}
在这些例子中,我们可以看到在一行中同时声明了多个变量,并且给它们赋予了对应的值。这使得代码更简洁、易读,并且方便同时初始化多个变量。需要注意的是,变量的数量和赋值的值的数量必须一致,否则会导致语法错误。
第一种:读取变量中保存的具体数据 get
第二种:修改变量中保存的具体数据 set
变量的作用域其实就是描述变量的有效范围,在什么范围之内是可以被访问的,只要出了这个范围该变量就无法访问了
在 Python 中,变量可以根据其作用域、生命周期和类型等特性进行分类。以下是 Python 中常见的变量分类:
在 Python 中,变量的作用域指的是变量在程序中可见和可访问的范围。Python 中的变量作用域主要分为四种:
在哪个作用域中声明的变量,则变量就在哪个作用域中。
同理,将函数也可以看做变量,也有这4个作用域
当引用一个变量时,Python 解释器会按照以下顺序搜索变量的作用域:
NameError
错误,指示变量未定义。如果在以上所有作用域中都找不到变量,将引发
NameError
。为了避免出现变量作用域的问题,建议在程序中合理地使用不同作用域的变量,并避免不必要的变量命名冲突。
在 Python 中,全局变量并不直接存储在栈内存中,而是存储在一个名为“全局命名空间”(Global Namespace)的字典中。这个字典用于存储全局作用域中定义的所有变量和函数名。
当我们在全局作用域中创建一个全局变量时,它会被添加到这个全局命名空间的字典中。这个字典的生命周期与程序的生命周期相同,即从程序启动到程序结束都存在。
当程序需要访问一个全局变量时,Python 会在全局命名空间中查找该变量的值。如果找到了对应的变量名,则使用该变量的值。如果没有找到对应的变量名,Python 会引发一个 NameError 错误。
需要注意的是,全局变量在整个程序中都可以访问,但如果在函数内部修改全局变量,必须使用 global
关键字声明该变量为全局变量,否则会创建一个新的局部变量,而不是修改全局变量。
以下是一个简单的例子来说明全局变量的工作原理:
# 作 者:JZQ
# 开发时间:2023/12/8 16:14
help("keywords")
# 全局变量在全局命名空间中
global_var = 10
def func():
# 在函数内部访问全局变量
print(global_var)
def modify_global_var():
# 修改全局变量需要使用 global 关键字声明
global global_var
global_var = 20
func() # 输出 10
modify_global_var()
print(global_var) # 输出 20 不使用global 10
func() #输出20 不使用global 10
在这个例子中,global_var
是一个全局变量,它被保存在全局命名空间中。函数 func()
可以直接访问全局变量,而函数 modify_global_var()
使用 global
关键字声明了要修改的全局变量,并成功修改了全局变量的值。
在 Python 中,集合(set
)以及其他一些复合数据类型(比如集合、字典、自定义对象等)并不支持直接的解构赋值,因为它们的结构与元组或列表不同。
a, b, c = (1, 2, 3) # 可行,元组的解构赋值
x, y, z = [4, 5, 6] # 可行,列表的解构赋值
但是,对于集合(set
)和字典(dict
)来说,它们的结构不是顺序排列的序列,无法像元组或列表那样直接进行解构赋值。
# 错误示例
a, b, c = {1, 2, 3} # TypeError: 'set' object is not iterable
# 使用字典的 items() 方法解构赋值
data = {'a': 1, 'b': 2, 'c': 3}
for key, value in data.items():
print(f"Key: {key}, Value: {value}")
# 输出:
# Key: a, Value: 1
# Key: b, Value: 2
# Key: c, Value: 3
对于集合,如果想要进行解构赋值,可以先将集合转换为列表或其他可迭代对象,然后再进行解构操作。但需要注意,集合是无序的,所以解构赋值可能无法准确反映集合中元素的顺序。字典则可以通过其 items()
方法来实现解构赋值。
# 在循环中使用解构赋值
data_list = [(1, 'a'), (2, 'b'), (3, 'c')]
for num, letter in data_list:
print(f"Number: {num}, Letter: {letter}")
# 输出:
# Number: 1, Letter: a
# Number: 2, Letter: b
# Number: 3, Letter: c
变量解构赋值能够简化代码,使得对数据结构的操作更加灵活。但要注意,数据结构的长度和解构赋值的变量数量要匹配,否则会引发 ValueError
。