PEP8 特殊约定
单前导下划线:_var
单下划线意味着该变量或者方法是一个私有属性,这种命名方式只是 PEP8 中的一种命名约定。只有以下一种情况会被 Python 解释器强制执行,当你使用通配符进行导入的时候,该属性是不会被自动导入。其它情况如:常规导入,直接读取等都不会被 Python 解释器强制执行。
Python 语言的基础语法涵盖了命名约定、数据类型、循环结构及函数定义等核心内容。详细解析了 PEP8 规范中的下划线用法,介绍了整数、浮点数、字符串、列表、元组、字典和集合等数据类型的特性与区别。此外,还对比了 Python 与 JavaScript 在循环和函数参数处理上的差异,补充了面向对象编程、异常处理及文件操作等关键知识点,帮助初学者系统掌握 Python 编程基础。

单下划线意味着该变量或者方法是一个私有属性,这种命名方式只是 PEP8 中的一种命名约定。只有以下一种情况会被 Python 解释器强制执行,当你使用通配符进行导入的时候,该属性是不会被自动导入。其它情况如:常规导入,直接读取等都不会被 Python 解释器强制执行。
只是为了解决命名和关键字冲突。
当在类上下文中使用时,触发'名称修饰器'。由 Python 解释器强制执行。
_MangledGlobal__mangled = 23
class MangledGlobal:
def test(self):
return __mangled
>>> MangledGlobal().test()
23
Python 的一些特殊方法(魔术方法)。
在 Python 命令窗口中可以访问到最近一次执行成功的结果。
>>> 20 + 3
23
>>> _
23
>>> print(_)
23
>>> list()
[]
>>> _.append(1)
>>> _
[1, 2, 3]
所有数据类型:整数、浮点数、字符串、布尔值、空值、列表、元组、集合、字典。尽管字典这种数据类型和 JS 中的对象很像,但是对应的 JS 类型是 Map 类型,所以在 Python 中是不存在对象这种数据类型的(这里的对象是指 JS 中的 Object)。
当数字太长时可以使用下划线分割,例如:100_000_000 与 100000000 相同,十六进制同理。
使用科学计数法把 10 用 e 代替 Python 也可以识别。
如果想输出多行字符串需使用 '''abc''' 或 """abc"""。
存在和 JS 相同的逻辑'与,或,非'运算规则,例如:print(True and '1234') 输出为 '1234',print(True or '1234') 输出为 True。且和 JS 相同的是在逻辑运算中空值 None 会被识别成 False。
和 JS 的数组特性一致,支持动态扩容。
元组区别于列表的是一旦初始化就不允许进行更改。当声明只有一个元素的元组时应该加','进行区别 (1,)。
和 JS 中的 Map 所对应,键值对结构。
和 JS 的 Set 对应,无序且不重复。
在 Python 中只可以通过下列四种方法去进行循环 for in、while、map()、filter()。在 Python3 中 map 和 filter 内置函数会返回迭代器对象,值得注意的是如果不去调用迭代器内的值,map 或者 filter 的处理函数不会被立即调用,而 JS 的 map 和 filter 函数在使用时会立即调用处理函数。
Python 中函数的参数根据作用一共可以分为五种类型分别是:必选参数、默认参数、可变参数、关键字参数和命名关键字参数。这使得在 Python 中函数的可玩性比在 JS 中要高上很多。注意:Python 函数的参数定义,必须按照如下顺序:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
Python 与 JS 函数区别
def enroll(name, gender, age=6, city='Beijing'):
print('name:', name)
print('gender:', gender)
print('age:', age)
print('city:', city)
# JS 函数这样调用会把 city 当成变量直接报错
enroll('Adam', 'M', city='Tianjin')
def add_end(L=[]):
L.append('END')
return L
# JS 使用默认参数时,不会存在下面这种问题,他会每次都重新声明一次值
add_end() # ['END']
add_end() # ['END', 'END']
arguments 读取可变参数,而 Python 直接在参数前加 * 即可。def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
calc(1, 2) # 5
nums = [1,2,3]
# 在 list 或 tuple 类型的变量前面加一个*号就可以变成可变参数
calc(*nums) # 14
Info: 在 JS 中完全没有这种使用方法。
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
person('Bob', 35, city='Beijing') # name: Bob age: 35 other: {'city': 'Beijing'}
extra = {'city': 'Beijing', 'job': 'Engineer'}
person('Jack', 24, **extra) # name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
* 进行分割,当然你也可以使用可变参数进行分割。当使用命名关键字参数时,在调用函数时需要把参数名带上,不然会被解释器识别成普通的位置参数。def person(name, age, *, city, job):
print(name, age, city, job)
person('Jack', 24, city='Beijing', job='Engineer') # Jack 24 Beijing Engineer
def person(name, age, *args, city, job):
print(name, age, args, city, job)
Danger: 虽然 Python 函数支持通过传入 tuple 和 dict 去调用函数,如:
f1(*args, **kw)。但是强烈不介意使用这种写法,因为这会使得代码可读性非常的差。
Python 是面向对象的语言,类是创建对象的模板。
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
def get_grade(self):
if self.score >= 90:
return 'A'
elif self.score >= 60:
return 'B'
else:
return 'C'
s = Student('Alice', 95)
print(s.get_grade()) # A
使用 try-except 块来处理程序运行时的错误。
try:
x = int(input("请输入一个数字:"))
y = 10 / x
except ValueError:
print("输入无效")
except ZeroDivisionError:
print("除数不能为零")
else:
print(f"结果是 {y}")
finally:
print("执行完毕")
Python 提供了丰富的文件操作方法,推荐使用 with 语句确保文件正确关闭。
with open('example.txt', 'w', encoding='utf-8') as f:
f.write('Hello World')
with open('example.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)
本文涵盖了 Python 的基础语法、数据结构、控制流及函数式编程的核心概念。掌握这些内容是进一步学习 Web 开发、数据分析或人工智能的前提。建议读者通过编写实际代码来巩固理解,并参考官方文档深入学习高级特性。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online