Python 基础
约 546 个字 12 行代码 预计阅读时间 2 分钟
基础语法
Python 的语法比较简单,以至于被称作“可以运行的伪代码”,基础知识去菜鸟教程上看看就差不多了,实战中Python有大量且好用的第三方库,大约目前有六万多个。使用Python一段时间之后,便可以根据已有知识,正确地猜出新功能的作用。
一些小技巧
- 读取输入
map(int,input().strip().split())
,有的时候可能还要转化类型 - 反转列表、字符串等
s[::-1]
,也可以用reverse
- 列表生成式,结构是 [表达式 for 元素 in 可迭代对象 if 条件]。比如
second_lowest_students = [student[0] for student in students if student[1] == second_lowest_grade]
- lambda表达式,基本语法是 lambda 参数: 返回值,比如
students.sort(key=lambda x: x[1])
if __name__ == '__main__'
用来判断当前文件是否被作为主程序运行。__name__
是一个内置变量,用来表示当前模块的名字。当一个 Python 文件被直接运行时,__name__
的值会被设为__main__
,而当这个文件被作为模块导入时,__name__
的值则为模块名。
Python的风格
Note
首先就可以问个问题,为什么len
不是方法
点击展开,回答仅供参考
首先要意识到 len 不是方法,理由是平时都是 len(x) ,而不是 x.len() 。
至于为什么,大概是因为它经过了特殊处理,已经可以算是Python内置的运算符了。
Python可以被视为一个框架,解释器会调用特殊的方法(即魔术方法)来执行基本对象操作,特殊方法两端都有下划线,也被称作魔术方法,这些方法是无法自己实现的,因为它们是给解释器用的,绝大部分时候特殊方法都是隐式调用的,比如for i in x:
其实会调用iter(x)
,接着调用x.__getitem__
,唯一的例外是__init__
方法,它是用于类的初始化。特殊的方法可以用于类的实现,避免反复造轮子,并且标准库的实现显然比你的实现更高效,所以要优先选择标准库。
例如定义一个二维向量,非C++的可变长数组,就是单纯线性代数中的向量
import math
class Vector:
def __init__(self,x=0,y=0):
self.x=x
self.y=y
# 返回字符串形式,Python的习惯是前后加__
def __repr__(self):
return f'Vector({self.x!r},{self.y!r})'
def __ads__(self):
return math.hypot(self.x,self.y)
def __bool__(self):
return bool(abs(self))
def __add__(self,other):
x = self.x + other.x
y = self.y + other.y
return Vector(x,y)
def __mul__(self,scalar):
return Vector(self.x*scalar,self.y*scalar)