python3学习笔记

python3学习笔记

  • 基础语法
    • 编码
    • 标识符
    • 保留字
    • 注释
    • 行与缩进
      • 同一行显示多条语句
    • 输入输出
    • import 与 from...import
    • 结构
    • 迭代器
  • 变量
    • 变量的声明
    • 变量的赋值
    • 查询变量所指的对象类型
    • 删除对象
    • 标准数据类型
    • 数字(Number)
      • 数值运算
        • 数学函数
          • 三角函数
          • 数学常量
        • 随机数函数
    • 字符串(String)
      • 字符串转移符号、格式化、f-string、内建函数等
    • 列表(List)
      • python列表函数&方法
    • 元组(Tuple)
    • 集合(Set)
      • 集合内置方法
    • 字典(Dictionary)
      • 字典内置函数和方法
        • dict.items的应用
        • 关于字典的赋值、浅拷贝和深拷贝
    • 数据类型间的比较
    • 数据类型转换
  • 函数
    • 格式
    • 参数
      • 参数分类
      • 参数传递
    • 匿名函数
    • 强制位置参数
  • 数据结构

基础语法

编码

默认编码为UTF-8,指定编码方式:

# -*- coding: encoding -*-

其中encoding表示为源码文件指定的编码。

标识符

python3中可以用中文作为变量名。

保留字

>>> import keyword
>>> keyword.kwlist
['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']

注释

·单行注释:以#开头
·多行注释:以’’’(三个单引号)或"""(三个双引号)作为开头和结尾(相当于一个多行字符串

行与缩进

·python不使用大括号表示代码块,而是使用缩进,缩进不一致时会导致运行错误
·多行语句中使用’\'将多行语句并为一行,在[],{},()中的多行语句不需要使用反斜杠

同一行显示多条语句

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

输入输出

·输入:

input'请输入')

·输出:

print('Hello world')           #换行输出
print('Hello world',end = "")  #结尾符号为end的值   

import 与 from…import

在 python 用 import 或者 from…import 来导入相应的模块。

整个模块(somemodule) 导入,格式为: import somemodule

某个模块中导入某个函数 ,格式为: from somemodule import somefunction

某个模块中导入多个函数 ,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

某个模块中的全部函数导入,格式为: from somemodule import *

结构

条件控制:if-elif-else
循环:while-else(CTRL+C可以中断无限循环), for int [range()]
循环中都可以存在else子句,当循环条件为false时执行,但使用break结束循环时不执行
pass是空语句,不做任何事情,一般用作占位语句保证结构的完整性

迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()。

>>> list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2

#用for语句遍历
for x in it:
    print (x, end=" ")

迭代器详情

变量

变量的声明

·Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
·在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。

变量的赋值

等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
多个变量同时赋值:

a = b = c = 1           #将a、b、c赋值为1
a, b, c = 1, 2, "runoob"#将a赋值为1,b赋值为2,c赋值为"runoob"

查询变量所指的对象类型

1.type()

>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

2.isinstance()

>>> a = 111
>>> isinstance(a, int)
True
>>>

区别:type()不认为子类是一种父类类型,而isinstance()认为子类是一种父类类型。

删除对象

del var
del var_a, var_b

标准数据类型

·python3的标准数据类型有六个,分别是:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)
·不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
·可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

数字(Number)

包括int(整数,表示长整型,没有long),bool(布尔,true and false),float(浮点数),complex(复数)

数值运算

>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32

ps1.在混合运算时,python会把整型转换成为浮点数
ps2.bool类型的false等于0,true等于1,可以用在数值计算中
ps3.海象运算符:=可在表达式内部为变量赋值(python3.8中可用)

if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

ps4.‘//’运算得到整数,但不一定得到整型数据,具体数据类型由除数和被除数决定
ps5.在交互模式中,表达式的结果将被赋给变量‘_’

数学函数

包含在math模块中
python3学习笔记_第1张图片

三角函数

python3学习笔记_第2张图片

数学常量

python3学习笔记_第3张图片

随机数函数

包含在random模块中。
python3学习笔记_第4张图片

字符串(String)

1.字符串包含在单引号/双引号中,用’’'或"""可以括多行字符串

word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由多行组成"""

2.转义符为’\’,使用r(即row)可以使反斜杠不发生转义

word =  r"this is a line with \n"

同时反斜杠也可以作续行符使用
3.用‘+’连接字符串,‘*’表示重复当前字符串

print(str * 2)             # 输出字符串两次
print(str + '你好')         # 连接字符串

4.Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 (表示倒数第一个字符)开始。字符串截取:变量[头下标:尾下标:步长]取时左闭右开,第二个参数不存在时表示取到末尾,步长为负时逆向读取

print(str[0:-1])           # 输出第一个到倒数第二个的所有字符
print(str[2:5])            # 输出从第三个开始到第五个的字符
print(str[2:])             # 输出从第三个开始后的所有字符
print(str[1:5:2])          # 输出从第二个开始到第五个且每隔两个的字符

5.python中的字符串不能改变
字符串更新方式:切片拼接

var1 = 'Hello World!'
 
print ("已更新字符串 : ", var1[:6] + 'Runoob!')

#输出‘已更新字符串 :  Hello Runoob!’

字符串转移符号、格式化、f-string、内建函数等

字符串相关

列表(List)

列表是python中使用最频繁的数据类型
1.列表中元素类型可以不同,支持数字、字符串,甚至可以包含列表(即嵌套)
2.列表写在方括号[]之间,用逗号分隔元素。

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']

3.列表截取格式:变量[头下标:尾下标:步长]取时左闭右开,第二个参数不存在时表示取到末尾,步长为负时逆向读取

>>> a = ['hello','world']
>>> a[1::-1]
['world', 'hello']
>>> 

4.列表和字符串一样可以用‘*’表示重复,用‘+’表示拼接

print (tinylist * 2)    # 输出两次列表
print (list + tinylist) # 连接列表

5.列表中的元素可以改变

>>> a = [1, 2, 3, 4, 5, 6] 
>>> a[0] = 9      #修改单个元素 
>>> a[2:5] = [13, 14, 15]  #修改多个元素
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = []   # 用来删除元素
>>> a
[9, 2, 6]

p.s.也可以用del来删除列表中某一元素

python列表函数&方法

python3学习笔记_第5张图片
python3学习笔记_第6张图片
关于sort:reverse=False时升序排序,True时降序排序,默认升序排序。那个key没太看懂

元组(Tuple)

1.元组写在小括号 () 里,元素之间用逗号隔开;元组中的元素类型也可以不相同。
2.元组中的元素不可以被修改,字符串可以看作一种特殊的元组。(可以用del语句删除整个元组)
p.s.所谓元组的不可变指的是元组所指向的内存中的内容不可变。将某一元组重新赋值的操作是允许的。
3.包含0或1个元素元组的定义:

tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

集合(Set)

集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员;基本功能是进行成员关系测试和删除重复元素。

1.可以用{}或set()函数创建集合,但创建空集合必须用set函数

parame = {
     value01,value02,...} #创建集合,重复的元素会被自动去掉
parame0 = set(value)  #创建集合parame0,其中value是一个序列

2.成员测试

sites = {
     'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}

if 'Runoob' in sites :
    print('Runoob 在集合中')
else :
    print('Runoob 不在集合中')
#输出'Runoob 在集合中'

3.集合运算

a = set('abracadabra')
b = set('alacazam')

print(a)         #输出{'b', 'c', 'a', 'r', 'd'}
print(a - b)     #a和b的差集,输出{'r', 'b', 'd'}
print(a | b)     #a和b的并集,输出{'b', 'c', 'a', 'z', 'm', 'r', 'l', 'd'}
print(a & b)     #a和b的交集,输出{'c', 'a'}
print(a ^ b)     #a和b中不同时存在的元素,输出{'z', 'b', 'm', 'r', 'l', 'd'}

集合内置方法

python3学习笔记_第7张图片

字典(Dictionary)

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过来存取的,而不是通过偏移存取。

字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

键(key)必须使用不可变类型(数字、字符串、元组)。

在同一个字典中,键(key)必须是唯一的。

(相当于c++中的map)

dict = {
     }   #创建空字典的方法(创建空集合必须用set的原因)
dict['one'] = '1'
dict['two'] = '2'
#此时dict = {'one': 1, 'two': '2'}
tinydict = {
     'name': 'runoob','code':1, 'site': 'www.runoob.com'}   #创建非空字典
print (tinydict.keys())   # 输出所有键
print (tinydict.values()) # 输出所有值
tinydict['name'] = 8        # 更新 Age
tinydict['School'] = "aa"  # 添加信息

del tinydict['name'] # 删除键 'name'
tinydict.clear()     # 清空字典
del tinydict         # 删除字典

#用构造函数dict创建字典
>>> dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{
     'Runoob': 1, 'Google': 2, 'Taobao': 3}
>>> dict(Runoob=1, Google=2, Taobao=3)
{
     'Runoob': 1, 'Google': 2, 'Taobao': 3}
>>>

#用循环创建字典
>>> {
     x: x**2 for x in (2, 4, 6)}
{
     2: 4, 4: 16, 6: 36}

字典内置函数和方法

python3学习笔记_第8张图片
python3学习笔记_第9张图片
fromkeys()的参数:seq[,val]

dict.items的应用

python3学习笔记_第10张图片

关于字典的赋值、浅拷贝和深拷贝

python3学习笔记_第11张图片

数据类型间的比较

1.string:‘blaba’/“blaba”,list:[‘a’,‘aa’,‘a’,1],tuple:(‘a’,‘aa’,‘a’,1),set:{‘a’,‘aa’,1},dictionary{‘a’:‘aa’,1:‘aa’}

2.list、tuple、string都属于sequence(序列),是有序的,通过偏移量调用,可以进行切片操作;set是无需的,且无重复元素;dictionary是无序的,元素为键值对,通过键来调用值

3.tuple和string是不可变的,set、list、dictionary是可变的

数据类型转换

函数 描述
int(x [,base]) 将x转换为一个整数(base为进制数,默认等于10,不为10时x要以字符串形式输入)
float(x) 将x转换到一个浮点数
complex(real [,imag]) 创建一个复数(real为数时生成real+imag*j,real为字符串时生成字符串对应的数如complex(”1+2j”) = (1+2j)
str(x) 将对象 x 转换为字符串
repr(x) 将对象 x 转换为表达式字符串(如,str = '1234’转化后,变为"‘1234’"
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象(好像就是把字符串按python规则算出来的意思)
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
set(s) 转换为可变集合
dict(d) 创建一个字典。d 必须是一个 (key, value)元组序列。
frozenset(s) 转换为不可变集合
chr(x) 将一个整数转换为一个字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串

x = 一个对象
s = 一个序列
d = 一个(key,value)元组序列

函数

格式

def 函数名(参数a,b,c……):
	函数体
	[return]

参数

参数分类

·必需参数
·关键字参数
·默认参数
·不定长参数(加*,将以元组形式引入,存放所有未命名的变量参数,加**则以字典形式引入)

参数传递

传不可变对象:如数字、元组、字符串等,形参改变不影响实参
传可变对象:如列表、字典、集合等,形参改变影响实参

匿名函数

python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

·lambda 只是一个表达式,函数体比 def 简单很多。
·lambda的主体是一个表达式,而不是一个代码块。仅仅能在·lambda表达式中封装有限的逻辑进去。
·lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
·虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

举例:

# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
 
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))

强制位置参数

Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。

在以下的例子中,形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 或 f 要求为关键字形参:

def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

数据结构

你可能感兴趣的:(python3学习笔记)