Python语言风格:pythonic
例如交换变量:python:x,y=y,x;即可;
Python能做什么?:爬虫,大数据,测试,web,AI,脚本处理。
Python是语言。跨平台。可以在Windows,Linux,macOS上运行,和Java语言一样,具有pvm(python 虚拟机);易于学习,相对于其他语言,的确容易学习;强大的三方类库;面向对象(是一种思想);泛型语言,弱类型;运行较慢,相对于c/c++,java;
语言分类:编译型语言(存在预编译的过程),解释型语言(动态语言,临时解释);但是严格区分这两种语言,已经不再合适了。不是所有的语言都是编译成机器码,而是中间码,例如c#,java。
Python,web开发:flask,django;
Python数据类型:
浮点数float:不区分单精度双精度,python是其他语言的双精度;
整数int:
整型运算:精度低的向精度高的转换,在除法时,/代表结果不丢失精度,float;//代表取整,int。
进制问题:0b:二进制;0o:八进制;0x:十六进制。前置表示;
>>> 0b11
3
>>> 0o4
4
>>> 0o12
10
>>> 0x12
18
>>>
Python进制转换:idle默认转换成10进制:
Bin();将其他进制转成二进制
>>> bin(12);
'0b1100'
>>> bin(0o12);
'0b1010'
>>>
int();转成10进制
hex();转成十六进制
oct();八进制
bool类型:归属于number类型,0为False;非0为True;>>> type(True);
>>> type(False);
>>> bool(4);
True
>>> bool(0.0);
False
//////////////并不只有数字可以和bool之间转换。
字符串长度为0,列表为空等等都是False;
>>> bool("True")
True
>>> bool("False")
True
>>> bool(None)
False
“dgss”字符串;[1,2]列表;{}
复数 23j,2+2j等等,主要是j
str:字符串,单引号,双引号,三引号,一定要成对出现
>>> type("1")
>>> "hhsdh'sd'dsd"
"hhsdh'sd'dsd"
>>> "let's go"
"let's go"
转义字符,但是不建议使用
三引号的使用
>>> type("1")
>>> "hhsdh'sd'dsd"
"hhsdh'sd'dsd"
>>> "let's go"
"let's go"
//print()函数会显示转义字符的效果,idle不会;
>>> "shgdh\nsadgh"
'shgdh\nsadgh'
>>> """ahsgdhg\nasd"""
'ahsgdhg\nasd'
>>> print("""ahsgdhg\nasd""");
ahsgdhg
asd
用r修饰的字符串代表原始字符串,即字符串看起来什么样,就是什么样!!
>>> print("hjhs\\nasgh");
hjhs\nasgh
>>> print(r"sads\naS");
sads\naS
>>> r"dsf\nsd"
'dsf\\nsd'
字符串的操作:
字符串拼接:>>> a="hello";
>>> b="world";
>>> a+b;
'helloworld'
获取单个字符:直接中括号[]下标实现。从0开始,也可以是负数,代表倒数第几个
>>> "hello"[2];
'l'
字符串的截取:
>>> a[0:4]
'abch'
>>> a[0:7:2];
'acel'
!!!!这种截取方式的第一个数字,代表起始未知,第二个代表结束未知(可以用负数表示),第三个数代表步长,默认是1,即连续截取;
第三个数是负数,要求第二个角标的位置在第一个的右侧;
第三个数为正数,要求第二个角标的位置在第一个的左侧;否则不会报错,但是达不到预期结果;
>>> a[0:-1];
'abchelloworldde'
>>> a[-1:0]
''
>>> a[0:-1]
'abchelloworldde'
>>> a[-1:0]
''
>>> a[1:-1];
'bchelloworldde'
>>> a[1:-1]
'bchelloworldde'
>>> a[1:0:-1]
'b'
>>> a[-1:-1]
''
>>> a[-1:0]
''
>>> a[-1:0:-1];
'feddlrowollehcb'
>>> a[1:1:-1]
''
>>> a[0:-1:-1]
''
>>> a[::-1]
'feddlrowollehcba'
>>> a[1:8:-1]
''
>>> a[1:8:1]
'bchello'
>>> a[8:1:-1]
'wollehc'
>>> a[0:]
'abchelloworlddef'
>>> a[0:-1:-1]
''
>>> a[-1:0:-1]
'feddlrowollehcb'
列表:内部元素的多样性,可以混用;list
列表可以嵌套列表(一般不叫二维数组,虽然是一个样子)
列表可以像字符串一样,直接通过下标获取相应位置的元素,返回的不是列表,而是单个元素,类型也由元素自身确定,也可以截取,但返回的一定是列表,不管元素的个数是多少。
列表和一个整数的乘,会得到几个列表的拼接
>>> a=[1,"324","3",True,45,5]
>>> a[::-1]
[5, 45, True, '3', '324', 1]
>>> type(a[2])
>>> a[1][2]
'4'
>>> type(a[1][2])
>>> 3*a
[1, '324', '3', True, 45, 5, 1, '324', '3', True, 45, 5, 1, '324', '3', True, 45, 5]
>>> a*a
Traceback (most recent call last):
File "
TypeError: can't multiply sequence by non-int of type 'list'
>>> a*3
[1, '324', '3', True, 45, 5, 1, '324', '3', True, 45, 5, 1, '324', '3', True, 45, 5]
>>>
列表和元组的拼接是无要求的,
元组 tuple,()表示,需要注意单个元素的表示
但是,因为元组的表示用()表示,所以,当元素个数只有一个的时候,应当在元素后面加一个“,”,用来表明这是一个元组,那么怎么表示空元组呢?直接()即可
>>> y=("1","2")
>>> x+y
(1, 2, '1', '2')
>>> y=("c",)
>>> x+y
(1, 2, 'c')
>>> type(x)
>>> type(())
>>> type((,))
SyntaxError: invalid syntax
本质上来说,字符串,列表,元组都是序列,序列的操作:
X[i],可以直接获得相应元素
切片特性(截取操作)
x in X,返回bool
Len()函数,求序列长度
max()函数,求最大值
min()函数,求最小值//根据字面值,或者ascii码值
ord()函数,可以将字符转成相应的ASCII码值
>>> x=[1,2,3,"hello",True]
>>> 2 in x
True
>>> 3 not in x
False
>>> len(x)
5
>>> len("qwertyy")
7
>>> max((1,2,34,5))
34
>>> max("sasdf")
's'
>>> min(dsfa)
Traceback (most recent call last):
File "
min(dsfa)
NameError: name 'dsfa' is not defined
>>> min("aifhjsd")
'a'
>>> ord("asd")
Traceback (most recent call last):
File "
ord("asd")
TypeError: ord() expected a character, but string of length 3 found
>>> ord("c")
99
/////////////////////////////////////////////////////////////////////////////
集合 set {},无序,不重复
运算:
-- 求差集
& 求交集
| 求并集
如何定义空的set?
>>> type({});
>>> type(set())
字典:
>>> {"hello":"world",3:[2,3,4],1:(2,True),"java":{1,3}}
{'hello': 'world', 3: [2, 3, 4], 1: (2, True), 'java': {1, 3}}
如何访问呢?
>>> x={"hello":"world",3:[2,3,4],1:(2,True),"java":{1,3}}
>>> x["hello"]
'world'
>>> x[3]
[2, 3, 4]
通过建访问!!!类似于set,键不能重复,key的定义要求不可变,int ,str
关于可变性:
List 可变
Tuple 不可变
值类型和引用类型
值类型 number(int bool float) tuple str 不可改变
引用类型 list set dict 可改变
>>> l=[1,"3","4",True]
>>> l.append(2)
>>> l
[1, '3', '4', True, 2]
>>> l.remove("3")
>>> l
[1, '4', True, 2]
>>> l.replace(1,"mmd")
Traceback (most recent call last):
File "
l.replace(1,"mmd")
AttributeError: 'list' object has no attribute 'replace'
>>> t=(1,2,3)
>>> t.append(4)
Traceback (most recent call last):
File "
t.append(4)
AttributeError: 'tuple' object has no attribute 'append'
关于运算:次方 ** 例如x的y次方 x**y
python不支持自增自减
>>> a=12;
>>> b=2;
>>> a+=b;
>>> a
14
>>> a-=b;
>>> a
12
>>> a*=b;
>>> a
24
>>> a/=b;
>>> a
12.0
>>> a//=b
>>> a
6.0
>>> a%=b;
>>> a
0.0
比较运算符:==, != > < <= >= 结果是bool
>>> 1==1
True
>>> 1=="1"
False
>>> 1>1
False
>>> bool({})
False
>>> bool("flase")
True
字符或者字符串的比较,逐一比较,根据ASCII码值
列表的比较 同字符串
元组的比较,同字符串
逻辑关系运算符 and or not
成员运算符 in not in
>>> a={1:"hello",2:"world",3:True}
>>> True in a
True
>>> "hello" in a
False
>>> 1 in a
True
>>> a.append(4:False);
SyntaxError: invalid syntax
>>> False in a
False
>>> a={1:"hello",2:"world",3:False}
>>> True in a
True
>>> False in a
False
>>> 3 in a
True
>>> 2 in a
True
>>> 1 in a
True
//对于字典来说,in 指的是 key
Is 和 == 的比较:
== 比较值
is 比较身份是否一样,其实就是比较内存地址 id(x) 表示x的地址
>>> a={1,2}
>>> b={2,1}
>>> a==b
True
>>> a is b
False
>>> id(a)
1911399348264
>>> id(b)
1911399346472
类型判断
>>> isinstance (i,int)
True
扩展用法:instance(i,(int,list,str));等等
对象的三个基本属性:type value id
位运算符:& | ^ ~ << >>