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)

img

2.4 输出与输入

2.4.1 print()

换行输出: \n 默认换行
不换行:end= ''
模式 r r+ w w+ a a+
+ + + +
+ + + + +
创建 + + + +
覆盖 + +
指针在开始 + + + +
指针在结尾 + +

2.4.2 input()

注意: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 内置函数

内置函数
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() import()
complex() hasattr() max() round() reload()
delattr() hash() memoryview() set()

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 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/JangNara/p/16703528.html