python 学习速查笔记

很多遍了,这次我一定要干掉这篇文章QAQ,大致结构先给出来,方便查看

[TOC]

python基础语法部分

编码

Python 3 默认使用 UTF-8 编码,所有字符串均为 Unicode 字符串。如果需要指定其他编码,可以在文件开头添加如下声明:

1
# -*- coding: cp-1252 -*-

此声明允许使用 Windows-1252 字符集,适用于保加利亚语、白俄罗斯语、马其顿语、俄语、塞尔维亚语等
主要是东欧语系

标识符

  • 标识符的第一个字符必须是字母或下划线 _。
  • 其他部分可以由字母、数字和下划线组成。
  • 标识符对大小写敏感
  • Python 3 支持非 ASCII 标识符,例如中文变量名。
    但是不建议使用中文变量名,不方便维护

保留字(关键字)

Python 的保留字(关键字)不能用作标识符。可以通过 keyword 模块查看所有关键字:
在编译器中使用运行以下即可

1
2
import keyword
print(keyword.kwlist)

输出为

1
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

基本不会命名这些吧,建议命名直接明确,并加上注释
##注释

  • 单行注释以 # 开头。
  • 多行注释可以使用多个 #,或使用三引号 ‘’’ 和 “””
    不嫌麻烦用#来多行也行,一般使用快捷键部署
    1
    2
    3
    4
    5
    6
    7
    8
    # 这是单行注释
    '''
    这是多行注释
    可以写多行内容
    '''
    """
    这也是多行注释
    """

行与缩进

Python 使用缩进来表示代码块,不需要使用大括号 {}。同一代码块的语句必须保持相同的缩进空格数。(要是爬眼睛看瞎建议还是加上括号)

1
2
3
4
if True:
print("True")
else:
print("False")

缩进不一致会导致IndentationError 错误。

多行语句

句子太长会影响到可读性,在python可以将一行玩意换行

  • 使用反斜杠\实现多行语句:
    1
    2
    3
    total = item_one + \
    item_two + \
    item_three
  • 在 []、{} 或 () 中的多行语句不需要反斜杠:
    1
    2
    total = ['item_one', 'item_two', 'item_three',
    'item_four', 'item_five']

数据类型

Python 支持四种数字类型:

  • int:整数,如 1。
  • bool:布尔值,如 True。
  • float:浮点数,如 1.23、3E-2。
  • complex:复数,如 1 + 2j。
  • string:字符串,如 hello
    可以使用sys.getsizeof()函数查看对象的内存占用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys
# 测试整数
print("整数 10 的内存占用:", sys.getsizeof(10)) # 28 字节
print("大整数 10**100 的内存占用:", sys.getsizeof(10**100)) # 72 字节
# 测试布尔值
print("True 的内存占用:", sys.getsizeof(True)) # 28 字节
print("False 的内存占用:", sys.getsizeof(False)) # 28 字节
# 测试浮点数
print("3.14 的内存占用:", sys.getsizeof(3.14)) # 24 字节
# 测试复数
print("1 + 2j 的内存占用:", sys.getsizeof(1 + 2j)) # 32 字节
# 测试字符串
print("'hello' 的内存占用:", sys.getsizeof("hello")) # 54 字节
print("'你好' 的内存占用:", sys.getsizeof("你好")) # 76 字节
````

### 整形(int)
整数是没有**小数部分**的数字,例如 `1`、`100`、`-50`。
- Python 3 中只有一种整数类型 `int`,没有 Python 2 中的 `long` 类型。
- 整数可以无限大(仅受内存限制)。

```python
a = 10
b = -5
c = 12345678901234567890 # 大整数

注意事项:

  • 整数运算时,除法/会返回浮点数,整除 // 会返回整数。
  • 可以使用 int()(格式转换形式) 函数将其他类型转换为整数

布尔型(bool)

布尔值只有两个取值:True 和 False

  • 布尔值是整数的子类,True 相当于 1,False 相当于 0。
  • 常用于条件判断和逻辑运算。(这玩意只能逻辑运算吧)
    1
    2
    is_valid = True
    is_empty = False
    注意事项:
    在逻辑运算中,andornot 是布尔运算的关键字
    非布尔值在条件判断中会被隐式转换为布尔值,例如 0、””、[] 会被视为 False,其他值被视为 True。**(注意输出的格式转换)**

浮点型(float)

浮点数是带有小数部分的数字,例如 1.23、-0.5、3E-2(科学计数法表示)。

  • 浮点数的精度有限,可能存在精度丢失问题。
  • 支持科学计数法表示,例如 3E-2 表示 0.03。
    1
    2
    3
    a = 3.14
    b = -0.001
    c = 2.5e3 # 2500.0
  • 浮点数运算时可能会出现精度问题,例如 0.1 + 0.2 的结果是 0.30000000000000004。
  • 可以使用round()函数对浮点数进行四舍五入

复数

复数由实部和虚部组成,形式为 a + bj,其中a是实部,b 是虚部,j 表示虚数单位。这玩意不是函数,也不是公式

  • 可以使用 realimag 属性分别获取实部和虚部。
    1
    2
    3
    4
    a = 1 + 2j
    b = 3.5 - 4.7j
    print(a.real) # 输出实部:1.0
    print(a.imag) # 输出虚部:2.0
    注意事项:
  • 复数的运算规则与数学中的复数运算一致。
  • 复数不能直接比较大小。你告诉我咋比吗,你告诉我呀

字符串

字符串是由字符组成的序列,用单引号 '、双引号"或三引号 '''""" 表示。
多行字符串可以换行

  • 字符串是不可变的,修改字符串会生成一个新的字符串
  • 支持索引切片操作。
  • 支持多种字符串操作,如拼接、重复、格式化等。
    可以吧字符串理解成一个数组
    1
    2
    3
    4
    5
    6
    7
    8
    9
    s1 = 'hello'
    s2 = "world"
    s3 = '''多行
    字符串'''
    s4 = "Python"
    print(s1[0]) # 输出:h
    print(s2[1:4]) # 输出:orl
    print(s1 + s2) # 输出:helloworld
    print(s4 * 2) # 输出:PythonPython
    注意事项:
  • 字符串的索引从 0 开始,支持负索引(从右向左)。
  • 切片操作str[start:end:step]中,start 包含,end 不包含。
  • 使用r前缀可以创建原始字符串,避免转义字符生效,例如r"\n"会直接输出 \n
  • 字符串格式化推荐使用 f-string(Python 3.6+),例如 f"Hello, {name}"
    1
    2
    3
    4
    str = '123456789'
    print(str[0:-1]) # 输出第一个到倒数第二个字符
    print(str[2:5]) # 输出第三到第五个字符
    print(str * 2) # 输出字符串两次

空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。

用户输入

使用input()函数等待用户输入

1
input("\n\n按下 enter 键后退出。")

以上代码中 ,\n\n 在结果输出前会输出两个新的空行。一旦用户按下 enter 键时,程序将退出。

同一行多条语句

如果想要在同一行执行多个语句可以使用分号;分隔多条语句:

1
import sys; x = 'runoob'; sys.stdout.write(x + '\n')

使用脚本执行以上代码,输出结果为:

1
runoob

使用交互式命令行执行,输出结果为:

1
2
3
>>> import sys; x = 'runoob'; sys.stdout.write(x + '\n')
runoob
7

此处的 7 表示字符数,runoob 有 6 个字符,\n 表示一个字符,加起来 7 个字符。
##代码组
缩进相同的语句构成代码组,通常用于 ifwhiledef class 等复合语句。首行以关键字开始,以**冒号( : )**结束,该行之后的一行或多行代码构成代码组。

1
2
3
4
5
6
if expression : 
suite
elif expression :
suite
else :
suite

输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":j接下来是例子

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/python3
x="a"
y="b"
# 换行输出
print( x )
print( y )
print('---------')
# 不换行输出
print( x, end=" " )
print( y, end=" " )
print()

import 与 from…import(模块导入)[很重要]

  • 在** python **用 import 或者 from...import 来导入相应的模块。
  • 将整个模块(somemodule)导入,格式为: import somemodule
  • 从某个模块中导入某个函数,格式为: from somemodule import somefunction
  • 从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
  • 将某个模块中的全部函数导入,格式为: from somemodule import *
import sys	#导入sys模块
print(sys.path)
"""
print ('命令行参数为:')
for i in sys.argv:
   print (i)
"""
from sys import argv, path	#导入 sys 模块的 argv,path 成员
print(path)	 # 因为已经导入path成员,所以此处引用时不需要加sys.path

命令行参数

使用 python -h 查看命令行参数帮助信息。在对应终端键入即可,例如

$ python -h
usage: python [option] … [-c cmd | -m mod | file | -] [arg] …
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit

[ etc. ]