Python编程基础入门导论(第1章)
第一节:Python 快速入门编程基础-1
文章目录
课程目标
课程内容
1. Python简介
Python是什么?


为什么选择Python?
2. 环境搭建
安装Python
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
安装代码编辑器


3. 输入输出
input()
函数获取用户输入。name = input("请输入你的名字:")
print("你好," + name)
print()
函数输出内容。print("Hello, world!")
4. 变量和数据类型
变量
name = "子衿"



基本数据类型
int
,如5
, -3
float
,如3.14
, -0.001
str
,如"Hello, world!"
, 'Python'
bool
,如True
, False
5. 注释
# 这是一个注释
"""这是一个多行注释"""
6. 列表和元组
列表
numbers = [1, 2, 3, 4, 5]
numbers.append(6) # 添加元素
print(numbers)
元组
point = (10, 20)
print(point)
7. 字典
创建字典
{}
创建字典。person = {"name": "失速引擎", "age": 30}
访问字典元素
print(person["name"])
附录
机器码
汇编指令 | 描述 | 机器码(示例,x86架构) |
---|---|---|
MOV EAX, 1 |
将立即数1移动到寄存器EAX | B8 01 00 00 00 |
ADD EAX, EBX |
将EBX寄存器的值加到EAX寄存器 | 01 D8 |
SUB EAX, EBX |
将EBX寄存器的值从EAX寄存器减去 | 29 C0 |
PUSH EAX |
将EAX寄存器的值压入堆栈 | 50 |
POP EBX |
从堆栈中弹出值到EBX寄存器 | 5B |
JMP label |
无条件跳转到标签label | E9 XX XX XX XX |
JE label |
如果上一个条件为真(ZF=1),则跳转到标签label | 0F 84 XX XX XX XX |
CALL function |
调用函数function | E8 XX XX XX XX |
RET |
从函数返回,将控制权返回给调用者 | C3 |
INT 0x80 |
调用操作系统中断处理程序(Linux系统调用) | CD 80 |
字节码
指令 | 操作码 | 说明 |
---|---|---|
LOAD_CONST |
100 | 从常量池中加载常量 |
LOAD_GLOBAL |
116 | 从全局命名空间中加载名称 |
STORE_FAST |
125 | 将值存储到局部变量 |
POP_TOP |
1 | 弹出栈顶元素 |
ROT_TWO |
23 | 交换栈顶两个元素 |
ROT_THREE |
24 | 交换栈顶三个元素 |
DUP_TOP |
25 | 复制栈顶元素 |
UNARY_POSITIVE |
10 | 单目正号操作符 |
UNARY_NEGATIVE |
11 | 单目负号操作符 |
UNARY_NOT |
12 | 逻辑非操作 |
BINARY_POWER |
19 | 幂运算 |
BINARY_MULTIPLY |
20 | 乘法 |
BINARY_TRUE_DIVIDE |
21 | 真除法 |
INPLACE_MULTIPLY |
26 | 原地乘法 |
GET_ITER |
68 | 获取迭代器 |
FOR_ITER |
93 | 进行循环迭代 |
CALL_FUNCTION |
64 | 调用函数 |
MAKE_FUNCTION |
83 | 创建函数 |
BUILD_SLICE |
90 | 构建切片 |
EXTENDED_ARG |
144 | 扩展参数,用于处理大于255的参数数 |
RAISE_VARARGS |
144 | 引发异常 |
RETURN_VALUE |
83 | 从函数返回值 |
JUMP_FORWARD |
110 | 无条件跳转 |
JUMP_IF_TRUE_OR_POP |
92 | 如果条件为真,则跳转,否则弹出栈顶元素 |
JUMP_IF_FALSE_OR_POP |
93 | 如果条件为假,则跳转,否则弹出栈顶元素 |
字符串操作
方法/属性 | 说明 | 示例 |
---|---|---|
str.lower() |
将字符串转换为小写 | "HELLO".lower() 返回 "hello" |
str.upper() |
将字符串转换为大写 | "hello".upper() 返回 "HELLO" |
str.capitalize() |
将字符串的首字母大写 | "hello".capitalize() 返回 "Hello" |
str.title() |
将每个单词的首字母大写 | "hello world".title() 返回 "Hello World" |
str.strip() |
移除字符串首尾的空白字符 | " hello ".strip() 返回 "hello" |
str.lstrip() |
移除字符串左侧的空白字符 | " hello ".lstrip() 返回 "hello " |
str.rstrip() |
移除字符串右侧的空白字符 | " hello ".rstrip() 返回 " hello" |
str.find(sub) |
查找子字符串,返回子字符串的最低索引 | "hello".find("lo") 返回 3 |
str.rfind(sub) |
从右侧开始查找子字符串,返回子字符串的最高索引 | "hello".rfind("l") 返回 2 |
str.replace(old, new) |
替换字符串中的子字符串 | "hello".replace("l", "x") 返回 "hexxo" |
str.split(sep) |
以指定分隔符分割字符串 | "hello world".split() 返回 ["hello", "world"] |
str.join(iterable) |
将序列中的元素以指定的字符串连接生成一个新的字符串 | " ".join(["hello", "world"]) 返回 "hello world" |
str.startswith(prefix) |
检查字符串是否以指定前缀开始 | "hello".startswith("he") 返回 True |
str.endswith(suffix) |
检查字符串是否以指定后缀结束 | "hello".endswith("lo") 返回 True |
str.isalpha() |
检查字符串是否只包含字母 | "hello".isalpha() 返回 True |
str.isdigit() |
检查字符串是否只包含数字 | "123".isdigit() 返回 True |
str.isalnum() |
检查字符串是否只包含字母和数字 | "hello123".isalnum() 返回 True |
str.islower() |
检查字符串是否全部为小写 | "hello".islower() 返回 True |
str.isupper() |
检查字符串是否全部为大写 | "HELLO".isupper() 返回 True |
str.istitle() |
检查字符串是否符合标题格式 | "Hello World".istitle() 返回 True |
str.len() |
获取字符串长度 | len("hello") 返回 5 |
str.count(sub) |
计算子字符串出现的次数 | "hello".count("l") 返回 2 |
str.format(*args, **kwargs) |
格式化字符串 | "{} is {}".format("hello", "world") 返回 "hello is world" |
列表操作
操作 | 说明 | 示例代码 |
---|---|---|
append(x) |
在列表末尾添加一个元素 x | lst.append(1) |
extend(iterable) |
将一个可迭代对象(如另一个列表)的所有元素添加到列表末尾 | lst.extend([2, 3]) |
insert(i, x) |
在指定位置 i 插入一个元素 x | lst.insert(0, 0) |
remove(x) |
移除列表中第一个值为 x 的元素 | lst.remove(1) |
pop([i]) |
移除列表中指定位置 i 的元素,并返回该元素。如果不指定位置,默认移除并返回列表中的最后一个元素 | lst.pop() 或 lst.pop(0) |
clear() |
清空列表中的所有元素 | lst.clear() |
index(x[, start[, end]]) |
返回列表中第一个值为 x 的元素的索引,可以指定搜索的起始和结束位置 | lst.index(2) 或 lst.index(2, 1, 5) |
count(x) |
返回 x 在列表中出现的次数 | lst.count(2) |
sort(key=None, reverse=False) |
对列表中的元素进行排序 | lst.sort() 或 lst.sort(reverse=True) |
reverse() |
反转列表中的元素顺序 | lst.reverse() |
copy() |
返回列表的浅拷贝 | new_lst = lst.copy() |
len(lst) |
返回列表长度 | length = len(lst) |
min(lst) |
返回列表中的最小值 | min_value = min(lst) |
max(lst) |
返回列表中的最大值 | max_value = max(lst) |
sum(lst) |
返回列表中所有元素的和 | total = sum(lst) |
字典操作
操作 | 说明 | 示例代码 |
---|---|---|
创建字典 | 创建一个空字典或带有初始键值对的字典 | my_dict = {} 或 my_dict = {"name": "Alice", "age": 25} |
添加元素 | 向字典中添加新的键值对 | my_dict["gender"] = "female" |
删除元素 | 根据键删除字典中的元素 | del my_dict["age"] |
更新元素 | 更新字典中已存在的键的值 | my_dict["age"] = 26 |
访问元素 | 通过键访问字典中的值 | name = my_dict["name"] |
检查键存在 | 检查键是否存在于字典中 | if "name" in my_dict: |
获取所有键 | 获取字典中所有的键 | keys = my_dict.keys() |
获取所有值 | 获取字典中所有的值 | values = my_dict.values() |
获取所有键值对 | 获取字典中的所有键值对 | items = my_dict.items() |
清空字典 | 清空字典中的所有元素 | my_dict.clear() |
复制字典 | 创建字典的浅拷贝或深拷贝 | copy = my_dict.copy() 或 deep_copy = deepcopy(my_dict) |
字典推导式 | 使用推导式创建字典 | {key: key * 2 for key in my_dict} |
合并字典 | 将两个或多个字典合并为一个 | {**dict1, **dict2} |
遍历字典 | 遍历字典中的键、值或键值对 | for key, value in my_dict.items(): |
conda设置
修改镜像
- 清除旧镜像
conda clean --all
- 添加清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- 设置Conda在搜索和安装包时显示每个包的具体来源URL
conda config --set show_channel_urls yes
Python环境操作
创建新环境
-
创建环境:
使用conda create
命令来创建一个新的环境。你可以指定Python版本和其他包作为依赖项。conda create --name myenv python=3.10
这里
myenv
是新环境的名称,python=3.10
指定了Python的版本。 -
创建环境并安装包:
你可以在创建环境时同时安装其他包。conda create --name myenv python=3.10 numpy pandas
激活环境
conda activate myenv
修改环境
-
安装新包:
在激活的环境中,你可以安装新的包。conda install numpy
-
更新包:
更新环境中的包到最新版本。conda update numpy
-
卸载包:
从环境中移除一个包。conda remove numpy
-
列出环境中的包:
查看当前环境中安装的所有包。conda list
管理环境
-
列出所有环境:
查看系统中所有Conda环境。conda env list
-
导出环境:
导出环境的配置,可以用于分享或在其他机器上重建相同的环境。conda env export > environment.yml
-
从YAML文件创建环境:
使用之前导出的YAML文件创建一个新的环境。conda env create -f environment.yml
-
删除环境:
删除一个不再需要的环境。conda env remove --name myenv
-
更新环境中的所有包:
更新环境中所有包到最新版本。conda update --all
-
查看环境变量:
查看当前环境的环境变量。conda info --envs
-
设置环境变量:
在激活的环境中,可以通过以下命令设置环境变量:conda env config vars set VARIABLE_NAME=VALUE
-
修改环境名称:
如果你需要修改环境的名称,可以使用以下命令:conda rename --name old_name new_name
内置方法
方法名 | 描述 | 示例 |
---|---|---|
abs() |
返回数的绝对值 | abs(-10) 返回 10 |
all() |
判断可迭代对象是否全部为真值 | all([1, 2, 3, 0]) 返回 False |
any() |
判断可迭代对象是否至少有一个真值 | any([0, 0, 4]) 返回 True |
bin() |
将整数转换为二进制字符串 | bin(10) 返回 '0b1010' |
bool() |
将值转换为布尔类型 | bool(0) 返回 False |
bytearray() |
创建字节数组 | bytearray(b'byte') |
bytes() |
创建不可变字节对象 | bytes(b'byte') |
callable() |
判断对象是否是可调用的 | callable(len) 返回 True |
chr() |
将整数转换为对应的 ASCII 字符 | chr(65) 返回 'A' |
classmethod() |
装饰器,将方法变为类方法 | @classmethod def my_method(cls): |
compile() |
编译源代码为代码或字节码对象 | compile('print("Hello")', 'file.py', 'exec') |
complex() |
创建一个复数 | complex(1, 2) 返回 (1+2j) |
delattr() |
删除对象的属性 | delattr(obj, 'x') |
dict() |
创建字典 | dict(key='value') |
dir() |
返回对象的属性和方法列表 | dir(obj) |
divmod() |
除法和取模运算 | divmod(10, 3) 返回 (3, 1) |
enumerate() |
将可迭代对象组合为枚举对象 | for i, v in enumerate(['a', 'b']): |
eval() |
计算字符串中的有效 Python 表达式 | eval('1 + 2') 返回 3 |
exec() |
执行字符串中的 Python 语句 | exec('x = 5') |
filter() |
使用函数过滤序列 | filter(lambda x: x > 1, [1, 2, 3]) 返回 [2, 3] |
float() |
将值转换为浮点数 | float(3) 返回 3.0 |
format() |
格式化字符串 | '{} {}'.format('Hello', 'World') 返回 'Hello World' |
frozenset() |
创建不可变集合 | frozenset([1, 2]) |
getattr() |
获取对象的属性值 | getattr(obj, 'x') |
globals() |
返回当前全局符号表的字典 | globals() |
hasattr() |
判断对象是否有指定的属性 | hasattr(obj, 'x') |
hash() |
返回对象的哈希值 | hash('hello') |
help() |
显示对象的帮助文档 | help(list) |
hex() |
将整数转换为十六进制字符串 | hex(255) 返回 '0xff' |
id() |
返回对象的内存地址 | id(obj) |
input() |
从标准输入读取一行字符串 | input('Enter something: ') |
int() |
将值转换为整数 | int('123') 返回 123 |
isinstance() |
判断对象是否是类的实例 | isinstance(42, int) 返回 True |
issubclass() |
判断一个类是否是另一个类的子类 | issubclass(int, float) 返回 False |
iter() |
返回对象的迭代器 | iter([1, 2, 3]) |
len() |
返回容器的长度 | len([1, 2, 3]) 返回 3 |
list() |
将可迭代对象转换为列表 | list('hello') 返回 ['h', 'e', 'l', 'l', 'o'] |
locals() |
返回当前局部符号表的字典 | locals() |
map() |
将函数应用于可迭代对象的每个元素 | map(lambda x: x*2, [1, 2, 3]) 返回 [2, 4, 6] |
max() |
返回可迭代对象中的最大值 | max(1, 2, 3) 返回 3 |
min() |
返回可迭代对象中的最小值 | min(1, 2, 3) 返回 1 |
next() |
从迭代器获取下一个元素 | next(iter([1, 2, 3])) 返回 1 |
object() |
创建一个新对象 | obj = object() |
oct() |
将整数转换为八进制字符串 | oct(10) 返回 '012' |
open() |
打开文件并返回文件对象 | open('file.txt', 'r') |
ord() |
将单个字符转换为它的 ASCII 码 | ord('A') 返回 65 |
pow() |
幂运算 | pow(2, 3) 返回 8 |
print() |
打印对象到标准输出 | print('Hello World') |
range() |
创建一个整数范围 | range(0, 5) 返回 range(0, 5) |
repr() |
获取对象的字符串表示 | repr([1, 2, 3]) 返回 '[1, 2, 3]' |
reversed() |
反转可迭代对象 | reversed([1, 2, 3]) 返回 reversed([1, 2, 3]) |
round() |
四舍五入到指定的小数位数 | round(3.14159, 2) 返回 3.14 |
set() |
创建集合 | set([1, 2, 2]) 返回 {1, 2} |
setattr() |
设置对象的属性值 | setattr(obj, 'x', 42) |
slice() |
创建切片对象 | slice(1, 10, 2) |
sorted() |
对可迭代对象进行排序 | sorted([3, 1, 2]) 返回 [1, 2, 3] |
staticmethod() |
装饰器,将方法变为静态方法 | @staticmethod def my_method(): |
str() |
将对象转换为字符串 | str(42) 返回 '42' |
sum() |
对可迭代对象中的元素求和 | sum([1, 2, 3]) 返回 6 |
super() |
返回对父对象的引用 | super().method() |
tuple() |
将可迭代对象转换为元组 | tuple([1, 2, 3]) 返回 (1, 2, 3) |
type() |
获取对象的类型或创建新的类型 | type('str') 返回 <class 'str'> |
vars() |
返回对象的 __dict__ 属性 |
vars(obj) |
zip() |
将多个可迭代对象中对应的元素打包成一个个元组 | zip([1, 2], ['a', 'b']) 返回 [(1, 'a'), (2, 'b')] |
作者:欧阳枫落