python 基础笔记
1. python介绍
1.1 作者以及版本
作者:龟叔
版本:python2/python3
1.2 优缺点
注意:python2默认的编码格式是 ASCII 格式
注意:python3默认的编码格式是 UTF-8 格式
优点:容易上手、免费开源可移植性、解释性语言、面向对象
缺点:运行时需要源码,执行效率慢
2. python 语法
2.1 注释
单行注释 #
多行注释 """ """
2.2 标识符
由数字、字母或下划线组成且不能以数字开头,并且区分大小写
命名规则:驼峰命名法
2.3 关键字
查看关键字命令: import keyword
print(keyword.kwlist)
2.4 输出与输入
2.4.1 print()
换行输出: \n 默认换行
不换行:end= ''
模式 |
r |
r+ |
w |
w+ |
a |
a+ |
读 |
+ |
+ |
|
+ |
|
+ |
写 |
|
+ |
+ |
+ |
+ |
+ |
创建 |
|
|
+ |
+ |
+ |
+ |
覆盖 |
|
|
+ |
+ |
|
|
指针在开始 |
+ |
+ |
+ |
+ |
|
|
指针在结尾 |
|
|
|
|
+ |
+ |
注意:py input输入的类型为str
2.5 变量
2.5.1 变量的分类
同java,但是python没有不叫成员变量,而是全局变量
3. 运算符
3.1 算术运算符
运算符 |
描述 |
实例 |
+ |
加 – 两个对象相加 |
a + b 输出结果 31 |
– |
减 – 得到负数或是一个数减去另一个数 |
a – b 输出结果 -11 |
* |
乘 – 两个数相乘或是返回一个被重复若干次的字符串 |
a * b 输出结果 210 |
/ |
除 – x 除以 y |
b / a 输出结果 2.1 |
% |
取模 – 返回除法的余数 |
b % a 输出结果 1 |
** |
幂 – 返回x的y次幂 |
a**b 为10的21次方 |
// |
取整除 – 向下取接近商的整数 |
>>> 9//2 4 >>> -9//2 -5 |
3.2 比较运算符
运算符 |
描述 |
实例 |
== |
等于 – 比较对象是否相等 |
(a == b) 返回 False。 |
!= |
不等于 – 比较两个对象是否不相等 |
(a != b) 返回 True。 |
> |
大于 – 返回x是否大于y |
(a > b) 返回 False。 |
< |
小于 – 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 |
(a < b) 返回 True。 |
>= |
大于等于 – 返回x是否大于等于y。 |
(a >= b) 返回 False。 |
<= |
小于等于 – 返回x是否小于等于y。 |
(a <= b) 返回 True。 |
3.3 赋值运算符
运算符 |
描述 |
实例 |
= |
简单的赋值运算符 |
c = a + b 将 a + b 的运算结果赋值为 c |
+= |
加法赋值运算符 |
c += a 等效于 c = c + a |
-= |
减法赋值运算符 |
c -= a 等效于 c = c – a |
*= |
乘法赋值运算符 |
c *= a 等效于 c = c * a |
/= |
除法赋值运算符 |
c /= a 等效于 c = c / a |
%= |
取模赋值运算符 |
c %= a 等效于 c = c % a |
**= |
幂赋值运算符 |
c **= a 等效于 c = c ** a |
//= |
取整除赋值运算符 |
c //= a 等效于 c = c // a |
:= |
海象运算符,可在表达式内部为变量赋值。Python3.8 版本新增运算符。 |
在这个示例中,赋值表达式可以避免调用 len() 两次: if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)") |
3.4 位运算符
运算符 |
描述 |
实例 |
& |
按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
(a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| |
按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 |
(a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ |
按位异或运算符:当两对应的二进位相异时,结果为1 |
(a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ |
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 |
(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
<< |
左移动运算符:运算数的各二进位全部左移若干位,由”<<“右边的数指定移动的位数,高位丢弃,低位补0。 |
a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> |
右移动运算符:把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数 |
a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
3.5 逻辑运算符
运算符 |
逻辑表达式 |
描述 |
实例 |
and |
x and y |
布尔”与” – 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。 |
(a and b) 返回 20。 |
or |
x or y |
布尔”或” – 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 |
(a or b) 返回 10。 |
not |
not x |
布尔”非” – 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
not(a and b) 返回 False |
3.6 成员运算符
运算符 |
描述 |
实例 |
in |
如果在指定的序列中找到值返回 True,否则返回 False。 |
x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in |
如果在指定的序列中没有找到值返回 True,否则返回 False。 |
x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
3.7 身份运算符
运算符 |
描述 |
实例 |
is |
is 是判断两个标识符是不是引用自一个对象 |
x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not |
is not 是判断两个标识符是不是引用自不同对象 |
x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
4. 数据类型
4.1 分类
python中有6中数据类型
整数类型:int、float、bool、complex # 不可变
字符串类型:str # 不可变
列表:list # 可变
元祖:tuple # 不可变
集合:set # 不可变
字典:dist # 不可变
4.2 数据类型转换
同java,显式转换,隐式转换
5. 流程控制语句
5.1 if else
if 条件:
代码块
else:
代码块
5.2 while
while 条件:
代码块
5.3 for
for i in 范围:
print(i)
6. 函数(方法)
6.1 语法结构
def 标识符:
代码块
6.2 参数
同java
6.3 递归
同java
6.4 内置函数
7. py文件操作
模式 |
描述 |
t |
文本模式 (默认)。 |
x |
写模式,新建一个文件,如果该文件已存在则会报错。 |
b |
二进制模式。 |
+ |
打开一个文件进行更新(可读可写)。 |
U |
通用换行模式(Python 3 不支持)。 |
r |
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb |
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ |
打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ |
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w |
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb |
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ |
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ |
以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a |
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ |
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
8. 常用模块
8.1 time模块
8.2 random模块
8.3 OS模块
8.4 sys模块
8.5 shutil模块
8.6 Json和pickle模块
8.7 configparser模块
8.8 hashlib模块
8.9 re模块
8.10 shelve模块
8.11 logging模块
9. 迭代器与生成器
9.1 迭代器
可迭代对象:凡是可以返回一个迭代器的对象都可称之为可迭代对象
那么什么迭代器呢?它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了__iter__和__next__()方法的对象都是迭代器,__iter__返回迭代器自身,__next__返回容器中的下一个值,如果容器中没有更多元素了,则抛出StopIteration异常,至于它们到底是如何实现的这并不重要。
9.2 生成器
一个包含了yield关键字的函数就是一个生成器,该函数也叫生成器函数。当生成器函数被调用时,在函数体中的代码不会被执行,而会返回一个迭代器。每次请求一个值,就会执行生成器中代码,直到遇到一个yield表达式或return语句。yield表达式表示要生成一个值,return语句表示要停止生成器。换句话说,生成器是由两部分组成,生成器的函数和生成器的迭代器。生成器的函数是用def语句定义的,包含yield部分;生成器的迭代器是这个函数返回的部分。二者合起来叫做生成器。
10. 装饰器
10.1 介绍
# 在不修改源代码的前提下,给代码增加新的功能,并且可以灵活的调用
# 使用方法:
# @装饰器名
"""
import time
def timer(parameter):
def outer_wrapper(func):
def wrapper(*args, **kwargs):
if parameter == 'task1':
start = time.time()
func(*args, **kwargs)
stop = time.time()
print("the task1 run time is :", stop - start)
elif parameter == 'task2':
start = time.time()
func(*args, **kwargs)
stop = time.time()
print("the task2 run time is :", stop - start)
return wrapper
return outer_wrapper
@timer(parameter='task1')
def task1():
time.sleep(2)
print("in the task1")
@timer(parameter='task2')
def task2():
time.sleep(2)
print("in the task2")
task1()
task2()
"""
版权声明:本文为RayCheung原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。