1. 程序的基本语法元素:程序的格式框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、引用。
-
程序的格式框架:
def main():
# 主程序代码...
if __name__ == "__main__":
main()
这个例子展示了一个典型的程序格式框架。主程序的代码写在main()
函数中,然后通过if __name__ == "__main__"
判断是否执行主程序。
Python程序的格式框架可以分为两个部分:主程序和执行入口。
主程序:主程序是程序的核心部分,包含了实际的逻辑代码。主程序由一个或多个函数或类组成,用于完成特定的任务。主程序中的代码按照顺序执行,可以包含函数调用、变量定义、循环、条件判断等。
执行入口:Python程序的执行入口是通过特殊的代码块来实现的,主要是为了确保在被导入时不会执行主程序。在Python中,使用
if __name__ == "__main__"
来判断当前模块是否为主模块。如果是主模块,则执行主程序的代码;如果是被导入的模块,则不执行主程序的代码。
例如:
这段代码定义了一个名为`print_hi`的函数,该函数接受一个参数`name`并打印出一个问候语"Hi, {name}"。然后,通过`if __name__ == '__main__':`判断当前模块是否为主模块。如果是主模块,则调用`print_hi`函数并传入参数"PyCharm"来打印出问候语"Hi, PyCharm"。
(补充:f-string是一种用于字符串格式化的特殊语法。它是在字符串前加上字母"f"来标记的。在f-string中,你可以在大括号{}
中使用变量名或表达式,它们会被自动替换为对应的值,这样可以将变量的值或表达式的结果直接嵌入到字符串中。如图中print(f'Hi, {name}')
,大括号{name}
表示一个变量,它会被替换为name
变量的实际值(Pycharm)。当程序执行到这行代码时,name
变量的值会被插入到字符串中,然后整个字符串被打印出来。可以与下图对比理解)
这样的格式框架可以使程序更可扩展和可维护。当将该模块作为一个库导入到其他模块中时,主程序的代码不会被执行,只有在直接运行该模块时才会执行主程序的代码。
-
缩进:
Python的缩进规则如下:
- 使用空格或制表符进行缩进,但不能混合使用,推荐使用4个空格进行缩进。
- 使用缩进来表示代码块的开始和结束。在一个代码块内,所有的语句都必须具有相同的缩进级别。
- 缩进级别可以是任意数量的空格或制表符,只要保持一致即可。例如,一个代码块内的所有语句都缩进了4个空格,则该代码块中的语句都属于同一个层次结构。
- 当一个代码块结束时,缩进回到上一个较低级别的层次结构。
def calculate_average(num_list):
total = 0
count = 0
for num in num_list:
total += num
count += 1
average = total / count
return average
在代码中,例如for
循环的代码块是通过缩进来划定的,以表示它们属于同一个代码块。
缩进的正确使用对于代码的可读性和正确性非常重要,因此在编写Python代码时,务必注意缩进的正确性。
-
注释:
# 这是一个计算平均值的函数
def calculate_average(num_list):
total = 0
count = 0
for num in num_list:
total += num
count += 1
average = total / count
return average
通过在代码前添加#
符号,可以将该行代码标记为注释。注释用于解释代码的功能和作用。
-
变量:
变量的命名规则:
- 变量名由字母、数字和下划线组成,不能以数字开头。
- 变量名区分大小写,例如"age"和"Age"是两个不同的变量。
- 变量名应该具有描述性,以便于代码的阅读和理解。
- 避免使用Python内置关键字作为变量名,如
if
、for
、while
等。
在Python中,变量的赋值使用等号(=)进行,例如:
name = "Alice"
age = 25
在上面的例子中创建了两个变量name
和age
,并分别赋予了字符串"Alice"和整数25的值。当变量被赋值,就可以在之后的代码中使用它们。例如:
print(name)
print(age)
以上代码会分别打印出变量name
和age
的值。
在Python中,变量是可以被重新赋值的。这意味着你可以在程序的不同位置多次赋值给同一个变量,且每次赋值都会覆盖之前的值。例如:
name = "Alice"
print(name) # 输出: Alice
name = "Bob"
print(name) # 输出: Bob
以上代码首先将变量name
赋值为"Alice",然后又重新赋值为"Bob"。
Python的变量是用来存储数据值的标识符。变量的类型是根据赋给它的值来自动推导的。变量的赋值使用等号(=),可以多次赋值给同一个变量。正确使用变量可以使代码更加灵活和可读。
-
命名:
在Python中,命名有以下几个规则:
- 只能由字母(大小写都可以)、数字和下划线组成。
- 不能以数字开头。
- 区分大小写,例如
age
和Age
是两个不同的变量。- 不能使用Python的关键字作为命名,如
if
、for
、while
等。- 尽量使用有意义且描述性强的名称,以便于代码的理解和维护。
- 可以使用驼峰命名法来区分单词,例如
myVariable
。- 对于常量,通常使用全大写字母和下划线组成的命名,例如
MAX_VALUE
。- 避免使用单个字符作为名称,除非是用来表示临时变量或者循环计数器。
以下是根据命名规则的示例:
合法命名的变量:
age = 25
name = "Alice"
my_variable = 10
total_students = 100
不合法命名的变量:
1age = 25 # 开头不能是数字
my-variable = 10 # 不能使用连字符
if = 5 # 不能使用关键字作为变量名
合法命名的函数:
def calculate_average():
# 函数体
pass
def get_total_students():
# 函数体
pass
合法命名的类:
class PersonDetails:
# 类的定义
pass
class StudentRecord:
# 类的定义
pass
合法命名的常量
MAX_VALUE = 100
PI = 3.14
-
保留字:
Python有一些保留字,这些保留字是Python语言中已经预留的关键字,用于表示特定的语法结构或功能。以下是Python的保留字列表:
False | class | finally | is | return | None |
continue | for | lambda | try | True | def |
from | nonlocal | while | and | del | global |
not | with | as | elif | if | or |
yield | assert | else | import | pass | break |
except | in | raise |
这些保留字具有特殊的含义,在编写代码时应避免将它们用作变量名、函数名或其他标识符。因此,在命名时应避免使用这些保留字,以免发生语法错误。
将变量的名字命名为Python的保留字(如if
、for
)会导致程序报错。
-
数据类型:
在Python中,常见的数据类型包括:
1. 数字类型(Number):整数(int)、浮点数(float)、复数(complex)等。
整数
num1 = 10
num2 = -5
浮点数
num3 = 3.14
num4 = -2.5
复数
num5 = 2 + 3j
num6 = -4j
2. 字符串类型(String):由一串字符组成的序列,用单引号或双引号括起来。
name = "Alice"
message = 'Hello, world!'
在Python中,字符串是不可变的,即一旦创建就不能修改。字符是字符串的组成部分,一个字符可以用单引号或双引号括起来。
下面是一些关于字符串和字符的示例:-
字符串:`name = "Alice"`-
字符:`first_char = 'A'`
字符串可以进行各种操作,如拼接、切片和索引等。例如:
字符串拼接:`greeting = "Hello" + " " + name`
字符串切片:`substring = name[1:3]`
字符串索引:`first_char = name[0]`
通过这些操作,你可以对字符串进行修改、截取和访问其中的字符。注意的是字符串是不可变的,因此对字符串进行修改会创建一个新的字符串。
3. 列表类型(List):有序、可变的数据集合,列表使用方括号 [] 来表示,元素之间用逗号分隔。下面是一些关于列表的示例:
numbers = [1, 2, 3, 4, 5] # 列表中存储整数
fruits = ['apple', 'banana', 'orange'] # 列表中存储字符串
mixed = [1, 'apple', True, 3.14] # 列表中存储不同类型的元素
列表中的元素可以通过索引访问和修改。索引从0开始,表示列表中的第一个元素,负数索引表示从列表末尾开始倒数。例如:
print(numbers[0]) # 输出:1
print(fruits[2]) # 输出:orange
mixed[1] = 'melon' # 修改列表中的元素
print(mixed) # 输出:[1, 'melon', True, 3.14]
列表还支持一系列操作,如添加元素、删除元素、切片等。例如:
numbers.append(6) # 在列表末尾添加元素
fruits.remove('apple') # 删除列表中的元素
sliced = mixed[1:3] # 切片获取子列表
4. 元组类型(Tuple):有序、不可变的数据类型,类似于列表。元组使用圆括号()来表示,元素之间用逗号分隔。下面是一些关于元组的示例:
coordinates = (2, 3) # 元组中存储整数
person = ('Alice', 25, 'female') # 元组中存储不同类型的元素
元组中的元素可以通过索引访问,但不能修改。索引从0开始,表示元组中的第一个元素,负数索引表示从元组末尾开始倒数。例如:
print(coordinates[0]) # 输出:2
print(person[1]) # 输出:25
元组的不可变性意味着一旦创建,就不能修改其元素。因此,不能像列表那样添加、删除或修改元组中的元素。但是,可以使用元组进行元素的组合、传递和返回,以及在字典中作为键使用,因为元组的不可变性保证了其在这些场景下的安全性和稳定性。
5. 字典类型(Dictionary):无序、可变的数据类型,用于存储键-值对。字典使用花括号{}来表示,键和值之间用冒号:分隔,键-值对之间用逗号分隔。下面是一个字典的示例:
details = {'name': 'Alice', 'age': 25, 'gender': 'female'}
字典中的键必须是唯一的,而值可以是任意类型的数据。通过键可以访问和修改字典中的值。例如:
print(details['name']) # 输出:Alice
print(details['age']) # 输出:25
details['gender'] = 'male' # 修改字典中的值
print(details) # 输出:{'name': 'Alice', 'age': 25, 'gender': 'male'}
字典还支持一系列操作,如添加键-值对、删除键-值对、获取所有键或值等。例如:
details['address'] = '123 Main St' # 添加键-值对
del details['age'] # 删除键-值对
keys = details.keys() # 获取所有键
values = details.values() # 获取所有值
6. 集合类型(Set):无序、可变的数据类型,用于存储多个唯一的元素。集合使用花括号{}来表示,元素之间用逗号分隔。下面是一个集合的示例:
fruits = {'apple', 'banana', 'orange'}
集合中的元素必须是唯一的,重复的元素会被自动去重。集合支持一系列操作,如添加元素、删除元素、判断元素是否存在等。例如:
fruits.add('grape') # 添加元素'grape'
print(fruits) # 输出:{'apple', 'banana', 'orange', 'grape'}
fruits.remove('banana') # 删除元素'banana'
print(fruits) # 输出:{'apple', 'orange', 'grape'}
print('apple' in fruits) # 判断元素'apple'是否存在,输出:True
集合还支持集合间的交集、并集、差集等操作。例如:
7. 布尔类型(Boolean):表示真(True)或假(False)的值。
is_valid = True
is_older = False
布尔(Boolean)类型是一种表示真或假的数据类型。布尔类型只有两个取值:True和False(首字母要大写)。布尔类型常用于条件判断和逻辑运算。在条件判断中,可以使用布尔类型来判断条件是否成立。例如:
x = 5
y = 10
is_greater = x > y # 判断x是否大于y,结果为False
print(is_greater) # 输出:False
在逻辑运算中,布尔类型可以进行与、或、非等操作。例如:
a = True
b = False
result_and = a and b # 与运算,结果为False
result_or = a or b # 或运算,结果为True
result_not = not a # 非运算,结果为False
print(result_and, result_or, result_not)
8. 空值类型(None):表示一个空对象或不存在。
result = None
这些数据类型可以用于存储和操作不同种类的数据,Python还提供了丰富的内置函数和方法来处理这些数据类型。在编程过程中,根据实际需求选择合适的数据类型,对数据进行操作和处理。
-
赋值语句:
x = 10
y = x + 5
在上述例子中,将10
赋值给变量x
,然后通过表达式x + 5
将结果赋值给变量y
。
-
引用:
在上述例子中,list1
和list2
引用同一个列表对象。当对list1
进行操作时,list2
也会同步发生变化。这是因为它们引用的是同一个对象。
2.基本输入输出函数:input()、eval()、print()。
- input()函数用于从用户获取输入。它会等待用户输入,并将输入的内容作为字符串返回。例如:
name = input("请输入您的姓名:")
print("您的姓名是:" + name)
这段代码会提示用户输入姓名,然后将输入的内容存储在name变量中,并输出到屏幕上。
- eval()函数用于将字符串作为表达式进行求值。它会将传入的字符串作为有效的Python表达式进行求值,并返回求值结果。例如:
这段代码将字符串"2 + 3"作为表达式进行求值,得到结果5,并输出到屏幕上。
需要注意的是,eval()函数具有一定的安全风险,因为它可以执行任意的Python代码。在使用eval()函数时,应该确保输入的字符串是可信的,以避免潜在的安全问题。
- print()函数用于将数据输出到屏幕上。它可以接受一个或多个参数,并将它们输出到屏幕上。例如:
这段代码将姓名和年龄拼接成一条字符串,并输出到屏幕上。
print()函数还支持格式化输出,可以使用格式化字符串来控制输出的格式。例如:
通过format()方法来格式化输出字符串,将name和age的值填充到字符串中。输出结果为"姓名:Bob,年龄:30"。这些基本的输入输出函数在日常的编程中非常常用,可以用于和用户进行交互、输出计算结果等。
3.源程序的书写风格。
在Python中,有一种被广泛接受的源程序书写风格被称为PEP 8(Python Enhancement Proposal 8)。PEP 8提供了一套规范和建议,用于编写清晰、易读、一致的Python代码。以下是一些PEP 8中常见的指南:
1. 缩进:使用4个空格进行缩进,不要使用制表符(Tab)。
2. 行长限制:每行代码应尽量不超过79个字符。对于长表达式或注释,可以使用换行进行分割。
3. 空格:在逗号、冒号、等号等字符后面使用空格,但在括号和方括号内部不要使用空格。
4. 命名规范:使用小写字母和下划线来命名变量、函数和模块。用简洁、具有描述性的名称。
5. 函数和类的命名:使用驼峰命名法(CamelCase)来命名函数和类。首字母大写,后续单词首字母也大写。
6. 注释:使用注释来解释代码的功能和思路。注释应该使用英文,并且尽量清晰简洁。
7. 导入模块:每个导入语句应该独占一行,避免使用通配符导入(例如:`from module import *`),而是明确列出需要导入的内容。
这些规范和建议有助于提高代码的可读性和可维护性,使代码更易于理解和修改。此外,还有一些辅助工具可以帮助自动检查和修复代码风格,比如flake8和autopep8。
4.Python语言的特点。
Python是一种高级、解释型、面向对象的编程语言,具有以下特点:
1. 简洁易读:Python的语法非常简洁,使用空白符来组织代码,使得代码易读易理解。它使用简洁的语法规则和丰富的标准库,可以用更少的代码实现更多的功能。
2. 动态类型:Python是一种动态类型语言,不需要声明变量的类型,变量的类型是根据赋值判断的。这使得代码编写更加灵活和快速,同时也减少了类型转换的复杂性。
3. 高级内置数据结构:Python拥有丰富的高级内置数据结构,如列表、字典、集合和元组等。这些数据结构提供了方便的方法来处理和操作数据,大大简化了编程任务。
4. 强大的标准库:Python拥有庞大而强大的标准库,包含了许多模块和函数,用于处理各类任务,如文件操作、网络通信、图形处理、数据库连接等。这些模块可以极大地提高开发效率,避免重复造轮子。
5. 跨平台性:Python是一种跨平台的语言,可以在多个操作系统上运行,包括Windows、Linux、Mac等。这使得开发者可以在不同的平台上开发和运行Python程序,具有很高的可移植性。
6. 可扩展性:Python允许使用C、C++等语言编写扩展模块,可以对性能要求较高的部分进行优化。这使得Python既具备了快速开发和原型设计的特性,又能够满足性能要求高的应用场景。
7. 大活字数据分析库:Python拥有众多强大的数据分析和科学计算库,如NumPy、Pandas和matplotlib等,使得在数据处理、机器学习和人工智能领域有着广泛的应用。