一:注释
Python中用#表示单行注释,#之后的同行的内容都会被注释掉。
使用三个连续的双引号表示多行注释,两个多行注释标识之间内容会被视作是注释。
二:基础变量类型与操作符
1. 除法
* 除法 / python3中就算是两个整数相除,得到的也是小数。
- 两个除号表示取整数,Python会为我们保留去除余数的结果。
2.乘方
乘方运算使用**符号
print(f"{2**3}");
3.逻辑运算
用 and 表示与操作,or表示或操作,not表示非操作。而不是c++或者java中的 &&,||和 !
flag = True;
print(f"输出 true 的值 {flag}");flag = not True;
print(f"输出 not True 的值 {flag}");flag = not False;
print(f"输出 not False 的值 {flag}");flag = True and False;
print(f"输出 True and False 的值 {flag}");flag = True or False;
print(f"输出 True or False 的值 {flag}");
4.is
list的判断,一般有两种,除了 == 还有一种是 is。
Python是全引用的语言,其中的对象都是用引用来表示。is判断的就是两个应用是否执行同一个对象,而 == 则是判断两个引用指向的具体内容是否相等。
a = [1,2,3,4]
b = a
print(f"b is a: {b is a}")
print(f"b == a: {b == a}")
b = [1,2,3,4]
print(f"b is a: {b is a}")
print(f"b == a: {b == a}")
5.None
Python中None也是一个对象,所有为None的变量都会指向这个对象。所以判断一个变量是否是None时,可以使用is来进行判断,也可以用==。
6.bool()
作用,判断值是否为空,所有类型的默认空值会被返回False,否则都是True.比如0,"",[],{},()等
value = bool(None)
print(f"bool(None) 的值: {value}")
value = bool(0)
print(f"bool(0) 的值: {value}")
value = bool("")
print(f"bool(\"\") 的值: {value}")
value = bool([])
print(f"bool([]) 的值: {value}")
value = bool({})
print(f"bool({{}}) 的值: {value}")
value = bool(())
print(f"bool(()) 的值: {value}")
三. 变量与集合
3.1输入输出
Python当中的标准输入输出是input 和 print.
print会输出一个字符串,如果传入的不是字符串会自动调用str方法转成字符串进行输出。
默认输出会自动换行,如果想要以不同的字符结尾代替换行,可以传入end参数:
3.2变量
Python中声明对象,变量不需要带上类型,直接赋值即可,Python会自动关联类型,如果使用之前没有声明过的变量则会出现NameError异常
- 三元表达式
"python" if 3 > 2 else 2
#等价于下面这段代码
if 3 > 2:return 'python'
else:return 2
- 多个变量赋值
Python 允许同时为多个变量赋值
#创建一个整型对象,值为1,从后向前赋值,三个变量被赋予相同的数值
a = b = c = 1#为多个对象指定多个变量
a,b,c = 1,2,"python"
#1和2分配给变量a和b,字符串对象"python"分配给变量c
3.3标准数据类型
Python3中常见的数据类型有
- Number(数字)
- String(字符串)
- bool(布尔类型)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3的六个标准数据类型中
- 不可变数据3个:Number(数字),String(字符串),Tuple(元组)
- 可变数据3个:List(列表),Dictionary(字典),Set(集合)
此外还有一些高级的数据类型,如:字节数组类型(bytes).
3.4 数据容器list-列表
- Python中用[]表示空的list,可以直接在其中填充元素进行初始化。
- 列表中元素类型可以不相同,支持数字,字符串和列表(嵌套)。
- 和字符串一样,列表可以被索引和截取,被截取后返回一个包含所需元素的新列表。
3.3.1 +和*
加号 + 是列表连接运算符,星号*是重复操作。
3.3.2 append和pop
li = []
other_li = [4,5,6]
#使用append和pop在list的末尾插入或者删除元素
other_li.append(1)
other_li.append(2)
other_li.pop()
3.3.3 []加下标
[]加下标访问指定位置的元素,如果是负数,则表示倒序访问。-1表示最后一个元素,-2表示倒数第二个。超过范围,则为IndexError错误。
print(li[0])
print(li[-1])
3.3.4切片 start:end
切片是指从原list中拷贝出指定的一段。使用start:end语法,左闭右开。留空表示全部。
在加一个":"后跟数字,这个数字表示步长,步长为负表示逆向读取。步长 为1,正常顺序取,步长为2,间隔一个。
list = [0,1,2,3,4,5,6] print("list=",list)
print("list[0:1]=",list[0:1])
print("list[0:2]=",list[0:2])
print("list[0:3]=",list[0:3])
print("list[0:3:1]=",list[0:3:1])
print("list[0:3:2]=",list[0:3:2])
3.5数据容器Tuple(元组)
元组(tuple)与列表类似,区别是元组的元素不能修改。元组写在小括号()里,用逗号隔开。元组中的元素类型也可不同。
#list可变
list = [1,2,3,5,6]
list[0] = 2#tup不可变,会报错
tup = (1,2,3,4,5,6)
print(tup[0])
tup[0] = 2
- tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
- 构造包含0个或1个元素的元组比较特殊,所以有一些额外的语法:
tup1=() #空元组
tup2=(20,) #一个元素,需要在元素后添加逗号
如果创建只有一个元素的元组,需要注意在元素后面添加一个逗号,以区分它是一个元组而不是一个普通的值,这是因为在没有逗号的时候,Python会将括号解释为数学运算中的括号,而不是元组。
元组总结
- 1.与字符串一样,元组的元素不能修改
- 2.元组也可以被索引和切片,方法一样
- 3.注意构造包含0或1个元素的特殊语法规则
- 4.元组也可以使用+操作符进行拼接
3.6Set(集合)
- Python中的集合(set)是一种无序,可变的数据类型,用于存储唯一的元素
- 集合中的元素不会重复,并且可以进行交集,并集,差集等常见的集合操作
- 在Python中,集合使用大括号{}表示,元素之间用逗号,分隔
- 可以用set()函数创建集合
- 创建一个空集合必须用set(),而不是{},因为{}是用来创建空字典
sites = {'Python','Python','Java','C#','C++','C','Go'}
print(sites) #数据集合,重复的元素被自动去掉#成员测试
if 'Python' in sites:print('Python 在集合中')
else:print('Python不在集合中')#set可以进行集合运算
a = set('abcdefg')
b = set('abcd123')print("a",a)print("b",b)print("差集",a-b) # a 和 b 的差集print("并集",a | b) #a 和 b 的并集print("交集",a & b) #a 和 b 的交集print("不同时存在",a ^ b) #a 和 b 中不同时存在的元素
3.7Dictionary(字典)
- 字典(dictionary)是Python中另一个非常有用的内置数据类型。
- 列表是有序的对象集合,字典是无序的对象集合。两者直接的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
- 字典是一种映射类型,字典用{} 标识,它是一个无序的键(key):值(value)的集合。
- 键(key)必须使用不可变类型
- 在同一个字典中,键(key)必须是唯一的。
dict2 = {}
dict2['one'] ='Python'
dict2[2] = "Java"tinydict = {'name':'chao','age':18,'hoby':'Python'}print(dict2['one']) #输出键为 'one'的值
print(dict2[2]) #输出键为2 的值
print(tinydict) #输出所有的字典值
print(tinydict.keys()) #输出所有键
print(tinydict.values()) #输出所有值#构造函数 dict()可以直接从键值对序列中构建字典
dic3 = dict([('Python',1),('Java',2),('C++',3)])dic4 = {x:x**2 for x in(2,4,6)}
print(dic4)
注意:
- 1.字典是一种映射类型,它的元素是键值对
- 2.字典的关键字必须为不可变类型,且不能重复
- 3.创建空字典使用{}
3.8bytes类型
在Python3中,bytes类型表示的是不可变的二进制序列(byte sequence)
与字符串类型不同的是,bytes类型中的元素是整数值(0到255之间的整数),而不是Unicode字符
bytes类型通常用于处理二进制数据,比如图像文件,音频文件,视频文件等等。在网络编程中,也经常使用bytes类型来传输二进制数据。
创建bytes对象的方式有多种,最常见的方式是使用b前缀:
此外,也可以使用bytes()函数将其他类型的对象转换为bytes类型。bytes()函数的第一个参数是要转换的对象,第二个参数是编码方式,如果省略第二个参数,则默认使用UTF-8编码:
x = bytes("hello",encoding="utf-8")
与字符串类型类似,bytes类型也支持许多操作和方法,如切片,拼接,查找,替换等等。同时,由于bytes类型是不可变的,因此在进行修改操作时需要创建一个新的bytes对象。
x = b"hello"
y = x[1:3] #切片操作,得到b"el"
z = x + b"world" #拼接操作,得到b"helloworld"
需要注意的是,bytes类型中的元素是整数值,因此在进行比较时需要使用相应的整数值。例如:
x = b"hello"
if x[0] == ord("h"):print("The first element is 'h'")
#ord()函数用于将字符转换为相应的整数值
3.9import与from...import
导入模块(somemodule) | import somemodule | |
从某个模块中导入某个函数 | from somemodule import somefunction | |
从某个模块中导入多个函数, | from somemodule import firstfunc, secondfunc | |
将某个模块中的全部函数导入 | from somemodule import * |
#导入sys模块
import sys
print("=========python import mode============")
print("命令行参数为:")
for i in sys.argv:print("for 内的sys.argv=",i)
print("\n python 路径为",sys.path)#导入sys模块的argv,path成员
from sys import argv,path
print("===============pthon from import===============")
print("path:",path) #因为已经导入path成员,所以此处引用时使用path,而不需要加sys.