Python语法基础¶
约 1202 个字 92 行代码 预计阅读时间 5 分钟
在这节内容中,我们将介绍Python的基本语法和数据结构。
Python基础语法¶
Python是一种易于学习和使用的编程语言,其语法简洁明了。以下是一些Python的基本语法概念:
-
注释:Python使用
#
符号来表示单行注释,使用三重引号"""
或'''
来表示多行注释。# 这是一个单行注释 """ 这是一个多行注释 """
-
变量与赋值:Python中的变量不需要声明类型,可以直接赋值。
-
数据类型:Python支持多种数据类型,包括整数、浮点数、字符串、列表、元组、字典等。
x = 10 # 整数 y = 3.14 # 浮点数 name = "Alice" # 字符串
-
运算符:Python支持常见的算术运算符、比较运算符和逻辑运算符。
a = 5 b = 2 # 算术运算 sum = a + b # 加法 diff = a - b # 减法 product = a * b # 乘法 quotient = a / b # 除法 remainder = a % b # 取余 power = a ** b # 幂运算 # 比较运算 larger = (a > b) # 大于 smaller = (a < b) # 小于 is_equal = (a == b) # 等于 is_not_equal = (a != b) # 不等于 # 逻辑运算 and_result = (a > 0 and b > 0) # 与运算 or_result = (a > 0 or b < 0) # 或运算 not_result = not (a > 0) # 非运算
-
输入输出:使用
print()
函数输出内容,使用input()
函数获取用户输入。name = input("Enter your name: ") print("Hello, " + name)
-
控制结构:Python使用缩进来表示代码块,支持条件语句、循环语句等。
if x > 0: print("x is positive") elif x < 0: print("x is negative") else: print("x is zero") for i in range(5): print(i) # 输出0到4 while x > 0: print(x) x -= 1 # 每次循环减1,直到x为0
-
函数:Python使用
def
关键字定义函数,可以有参数和返回值。def add(a, b): return a + b result = add(3, 5) # 调用函数 print(result) # 输出8
-
异常处理:Python使用
try
和except
语句来处理异常。try: result = 10 / 0 # 可能引发除以零异常 except ZeroDivisionError: print("Cannot divide by zero")
读者可以通过以下链接了解Python的基本语法:
- Python基础语法
- Python基本数据类型
- Python条件语句:if、elif、else
- Python循环语句:for、while
Python基础数据结构¶
Python内置了多种数据结构,常用的有以下几种:
-
数字(Number):支持证书整数(int)、浮点数(float)、布尔值(bool)和复数(complex)。
integer = 42 # 整数 floating = 3.14 # 浮点数 boolean = True # 布尔值 complex_number = 1 + 2j # 复数
-
字符串(String):用于存储文本数据,可以使用单引号或双引号定义。
greeting = "Hello, World!"
-
列表(List):有序可变的元素集合,可以包含不同类型的元素。
fruits = ["apple", "banana", "cherry"]
-
元组(Tuple):有序不可变的元素集合,通常用于存储多个值。
point = (10, 20)
-
字典(Dictionary):无序可变的键值对集合,适合用于存储关联数据。
student = {"name": "Alice", "age": 20}
-
集合(Set):无序不重复的元素集合,常用于去重和集合运算。
unique_numbers = {1, 2, 3, 4, 5}
读者可以通过以下链接了解Python的基础数据结构:
可变与不可变类型¶
在Python中,数据类型可以分为不可变类型和可变类型,以上面介绍的六种数据结构为例:
- 不可变类型:数字(Number)、字符串(String)、元组(Tuple)
- 可变类型:列表(List)、字典(Dictionary)、集合(Set)
所谓“不可变类型”的数据对象,是指一旦创建后,其内容不能被修改;而用户视角下的修改操作实际上是创建了一个新的对象。相对的,“可变类型”的数据对象在创建之后,其值能够被修改,而且对象的身份保持不变。更进一步解释,当对不可变类型的对象进行修改时,其对应的内存地址会发生变化,而对可变类型的对象进行修改时,其内存地址保持不变。
这里给出一个简单的例子来说明可变与不可变类型的区别:
# 示例1:字符串(不可变)
s = "hello"
print(id(s)) # 输出:140701435548848
s = s + " world"
print(id(s)) # 输出:140701435549008(ID改变,说明创建了新对象)
# 示例2:列表(可变)
lst = [1, 2, 3]
print(id(lst)) # 输出:140701435550080
lst.append(4)
print(id(lst)) # 输出:140701435550080(ID未变,还是原来的对象)
# 示例3:可变对象可以通过索引赋值修改
tple = (1, 2, 3)
tple[1] = 10 # TypeError: 'tuple' object does not support item assignment
lst = [1,2,3]
lst[1] = 10
print(lst) # 输出:[1, 10, 3]
# 示例4:可变对象赋值后id不改变(即与原对象共用内存空间,类似C中的指针赋值)
lst1 = [1,2,3]
lst2 = lst1
lst2[1] = 10
print(lst1) # 输出:[1, 10, 3]
print(id(lst1) == id(lst2)) # 输出:True
那么,这在实际应用中有什么影响呢?举两个例子:
- 作为函数参数时:
- 不可变对象作为参数传递时,函数内部对其修改不会影响到外部的原始对象。
- 可变对象作为参数传递时,函数内部对其修改会直接影响到外部的原始对象。
- 在容器中的情况:
- 不可变对象可以作为dict的键或者set的元素,因为它们的哈希值不会改变。
- 可变对象不能作为dict的键或者set的元素,因为它们的值可能会变化,导致哈希冲突。
因此,理解可变和不可变对象的区别,对于编写可靠的代码、避免意外副作用以及进行性能优化都非常关键。
小结¶
通过本节内容,我们希望你对Python的基本语法和数据结构有一定了解。Python是一种易于学习和使用的编程语言,具有丰富的内置数据结构和强大的功能。掌握这些基础知识后,你将能够更好地使用Python进行编程。
至于更进阶的Python知识,可以自行查阅相关资料或参考书籍,例如:
练习
- 编写一个Python程序,创建一个包含至少5个元素的列表,使用循环接受用户输入并将输入的值添加到列表中,然后判断每项的类型,并输出每项的类型和内容。
-
尝试运行下述的Python代码,并解释
data1.txt
中的内容。import time def save_data(filename ,datas = []): # add timestamp as header datas.insert(0, time.time()) with open(filename ,'w') as f: f.write("\n".join(map(str,datas))) save_data('data0.txt') save_data('data1.txt')
-
(选做)不使用任何第三方库,尝试利用定积分的定义编写一个Python程序计算\(\int_{0}^{1} \frac{1}{x^2+1} \, dx\)的值。