Skip to content

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)