Python 学习笔记
1,python是什么类型的语言?
Python是一种面向对象、解释型、动态类型计算机程序设计语言
解释型:程序无需编译成二进制代码,而是在执行时对语句一条一条编译
动态类型:在程序执行过程中,可以改变变量的类型
它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起
2.BIF(Build-in-functions)内置函数,Python一共有68个内置函数
dir(__buitins__) 查看Python里面的内置函数
help(内置函数名称) 查看内置函数的作用和用法
3,在字符中打印引号,用/”输出引号
4,IDLE是一个Python shell,shell的意思就是“外壳”,基本上来说,就是一个通过键入文本与程序交互的途径!像我们Windows那个cmd窗口,像Linux那个黑乎乎的命令窗口,他们都是shell,利用他们,我们就可以给操作系统下达命令。同样的,我们可以利用IDLE这个shell与Python进行互动。
5,设置你的操作系统的环境变量,以便可以轻松进入Python环境
Python特设变量:
使用变量之前,要对变量赋值
变量名不能以数字开头,变量名可以包括字母,数字,下划线
最好给变量取一个专业一点的名字
字符串(文本)
‘5’+’8’=’58’
打印’Let\'s go'
"Let's go"
打印:C:\nom
‘C:\\now’
原始字符串:在字符串前面加一个r,比如: r’C:\now’
注意原始字符串结尾不能加反斜杠‘\’
三重引号字符串:str="""abcd"""
>>> str
'\na\nb\nc\nd'
>>> print(str)
a
b
c
d
条件分支:
if 条件:
else:
while 条件:
引入外援
random模块
randint()会返回一个随机的整数
6,快捷键
Alt+N:把上面的语句复制
Alt+P: 把下面的语句复制
7,逻辑操作符:
3<4 and 4>5 等价于 3<4<5 两种都可以实现
or
not
第五节 数据类型:
整型
浮点型
布尔类型 (bool):True 、False
e记法:科学计数法(不是数据类型)1.5e11是浮点型
8,类型转换
int() int(5.99)=5
float() float(520)=520.0
str() str(5.99)=’5.99’
9,type(a)得到a的数据类型
isinstance()
10,算数操作符
10//8=1
10/8=1.25
幂运算:3**3=27
-3**2=-9
优先级:**
11,条件操作符
elif = else if
悬挂else:else与if同一个缩进
三元操作符:
if x<y
Small=x;
else
Small=y;
等价于:small=x if x<y else y
断言(assert):当关键字后边的条件为假时,程序自动崩溃并抛出AssertionError的异常
for循环:
for 目标 in 表达式:
循环体
range():生成一个数列start到stop默认步长为1
Range([start,] stop [,step=1])中括号中的参数可以省略
break :终止循环并跳出循环
continue :终止本轮循环并开始下轮循环
12,列表
普通列表
混合列表mix=[1,3,14,’xiaojiayu’,[1,2,3]]
空列表empty=[];
向列表添加元素:
append()把元素添加到列表尾,只能添加一个参数
mix.append(‘小平’)
extend():以一个列表作为参数,可以添加多个参数
mix.extend([‘xiaoping’,’xiaojiayu’])
insert():有两个参数,添加的元素和添加的位置
mix.insert(‘小平’,0)放在列表头
number[i]:从列表中获取第i个元素
number.remove(‘小平’):从列表中删除’小平’元素
del语句:del number [i] 或者 del number (删除这个列表)
number.pop():返回最后一个元素
number.pop(i):返回列表中第i个元素
列表分片:number[i : j]拷贝列表中第i个元素到第j-1个元素
number[ : j]拷贝列表中第0个元素到第j-1个元素
number[i : ]拷贝列表中第i个元素到最后一个元素
注:原列表不发生变化
count:number.count(‘小平’)
index:number.index(‘小平’)
number.index(‘小平’,起始位置,结束位置)
reverse:number.reverse()
sort:number.sort(func,key,reverse)用指定的方式(func)对列表进行排序
func、key是默认的一般不考虑
reverse =false是默认的,reverse=true逆置
copy:list1=list2对list2进行操作时,list1跟着变化
list1=list2[ : ](分片)对list2进行操作是,list1不会变化
13,元组
元组里面元素不能修改!
创建和访问一个元组:tuple1=(1,2,3,4,5,6,7,8)或者tuple1=1,2,3,4,5,6,7
temp =(1)是一个整型数据,temp=(1,)是一个元组数据
8*(1,)=(1,1,1,1,1,1,1,1)
更新和删除一个元组:temp=(1,2,3,4,6,7,8)
temp=temp[:5]+(5,)+temp[5:]
del temp
14,字符串
(链接:http://bbs.fishc.com/thread-38992-1-1.html)
str.capitalize():字符串首字母大写
str.casefoid():将字符串所有字母变成小写
center(width):将字符串居中,并使用空格填充至长度width的新字符串
count(sub,[start,[end]]):返回sub在字符串里边出现的次数,start和end参数表示范围,[]表示参数可以省略
Endswith(sub,[start,[end]]):检查字符串是否以sub子字符串结束,如果是返回true,否则返回false,start和end参数表示范围,可选
Expandtabs([tabsize=8]) :把字符串中的tab符号(\t)转换为空格,如不制定参数,默认的空格数死tabsize=8
Find(sub,[start,[end]]) :检查sub是否包含在字符串中,如果有则返回索引值,否则返回-1
Index(sub,[start,[end]])):跟find方法一样,不过如果sub不在string中会产生一个异常
Isalnum():如果字符串至少有一个字符并且所有字符都是字符或数字则返回true
Isalpha()如果字符串
Isnumeric()
Isdigit()
Isspace()
Istitle()
Isupper()
Join(sub):以字符串
Ljust(width)
Lower()
Lstrip()
Partition()
Replace(old,new,[count])
rfind(sub,[start,[end]]):从右边开始查找
Rindex(sub,[start,[end]])
Split()
Rpatiton(sub)
Rstrip()
Splitlines
Startwith(prefix,[start,[end]])
Strip([chars])
Swapcase():反转字符串大小写
Title():返回标题化的字符串
Translate(table):根据table的规则
Upper()
Zfill(width):
15,字符串格式化
format:”{0} love {1}.{2}”.format(“I”,”fishc”,”com”)=I love fishc.com
”{a} love {b}.{c}”.format(a=“I”,b=”fishc”,c=”com”)=I love fishc.com
”{0} love {b}.{c}”.format(“I”,b=”fishc”,c=”com”)=I love fishc.com
“{0:.1f} {1}”.format(23.56,’GB’)=’23.6GB’
字符串格式化符号含义:
%c
%d
%o 格式化无符号八进制数
%s
%x 格式化无符号十六进制数 ’%x’ % 10=’a’
%X
%f ‘%f’ % 27.658=’27.658000’
%e ‘%e’ % 27.658=’2.765800e+01’
%E
%g
%G
格式化操作辅助指令
m.n m是显示的最小总宽度,n是小数后的位数,m可以省略
- 用于左对齐
+ 在正数前面显示加号
# 在八进制数前面显示零(‘/0’),在十六进制数前面显示(‘0x’)
0 显示的数字前面填充’0’取代空格
16,序列
List():把一个可迭代对象转换为列表
Tuple():把一个可迭代对象转化为元组
Str(obj):把obj对象转换为字符串
Len(sub):返回sub的长度
Max():返回参数里面的最大值,参数可以是一个元组、队列
Min():返回参数里面的最小值
Sum(interable[,start=0]):
Sorted():返回有序的队列
Reversed():返回一个迭代器列表
Enumerate():
>>> number=[1,2,3,4,5,6,7,8,9]
>>> enumerate(number)
<enumerate object at 0x03377BE8>
>>> list(enumerate(number))
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]
Zip():
>>> a=[1,2,3,4,5,6,7,8]
>>> b=[4,5,6,7,8]
>>> zip(a,b)
<zip object at 0x03378B20>
>>> list(zip(a,b))
[(1, 4), (2, 5), (3, 6), (4, 7), (5, 8)]
17,函数
定义:def MyFirstFunction():
函数内容。。。。
调用:MyFirstFunction()
函数的参数:
函数返回值:return
形参和实参:
函数文档:相当于注释,但可以通过 ’函数名.__doc__’ 或者help(函数名)打印
关键字参数:def Sayname(name,word):
Print(name’->’ word)
Sayname(word=‘123’,name= ’345’)
345->123
默认参数:定义了默认值的参数
def Sayname(name=’123’,word=’234’):
Print(name’->’ word)
Sayname()
123->234
Sayname(word=‘小甲鱼’,name= ’345’)
345->小甲鱼
收集参数(可变参数):
>>>def test(*params):
print('参数的长度是',len(params))
print('第二个参数是',params[1])
>>> test(1,2,3)
参数的长度是 3
第二个参数是 2
如果后面还有参数时,设置为默认参数或者如下
> def test(*params,exp):
print('参数的长度是',len(params),exp)
print('第二个参数是',params[1])
>>> test(1,2,3,4,5,6,exp=8)
参数的长度是 6 8
第二个参数是 2
18,内嵌函数:
闭包:
eg1:
>>> def FunX(x):
def FunY(y):
return x*y
return FunY
>>> i=FunX(8)
>>> i
<function FunX.<locals>.FunY at 0x02E134F8>
>>> type(i)
<class 'function'>
>>> FunX(8)(5)
40
eg2:
>>> def Fun1():
x=5
def Fun2():
x*=x
return x
return Fun2()
>>> Fun1()
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
Fun1()
File "<pyshell#36>", line 6, in Fun1
return Fun2()
File "<pyshell#36>", line 4, in Fun2
x*=x
UnboundLocalError: local variable 'x' referenced before assignment
>>> def Fun1():
x=[5]
def Fun2():
x[0]*=x[0]
return x[0]
return Fun2()
>>> Fun1()
25
>>> def Fun1():
x=5
def Fun2():
nonlocal x*=x
return x
return Fun2()
SyntaxError: invalid syntax
>>>
>>> def Fun1():
x=5
def Fun2():
nonlocal x
x*=x
return x
return Fun2()
>>> Fun1()
25
>>>
Global :把局部变量变成全局变量
Global count=10;
19,匿名函数:
Lambda语句:g=lambda x:2*x+1
g(3)
g=lambda x,y:x+y
g(3,4)
filter 过滤器
>>> list(filter(None,[1,0,False,True]))
[1, True]
过滤掉奇数:
>>> def odd(x):
return x%2
>>> temp=range(10)
>>> show=filter(odd,temp)
>>> list(show)
[1, 3, 5, 7, 9]
或者
>>> list(filter(lambda x:x%2 ,range(10)))
[1, 3, 5, 7, 9]
>>>
map():
>>> list(map(lambda x: x*2 ,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
20,递归
>>> def jiecheng(x):
if x==0:
return 1;
else:
return x*jiecheng(x-1)
>>> jiecheng(3)
6
21,创建字典
关键字:dict
dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object's
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
| in the keyword argument list. For example: dict(one=1, two=2)
>>> dict1=dict({('F',1),('i',2),('s',3),('h',4)})
>>> dict1
{'h': 4, 'i': 2, 's': 3, 'F': 1}
>>> dict2=dict(a='1',b='2',c='3')
>>> dict2
{'c': '3', 'a': '1', 'b': '2'}
>>> dict2['a']='4'
>>> dict2
{'c': '3', 'a': '4', 'b': '2'}
>>> dict2['d']='5'
>>> dict2
{'c': '3', 'd': '5', 'a': '4', 'b': '2'}
Fromkeys():创建一个新的字典
>>> dict1={}
>>> dict1.fromkeys({1,2,3})
{1: None, 2: None, 3: None}
>>> dict1.fromkeys({1,2,3},'number')
{1: 'number', 2: 'number', 3: 'number'}
>>> dict1.fromkeys({1,3},'数字')
{1: '数字', 3: '数字'}
访问字典的几个方法:
Keys() :打印每个项的key
Values():打印每个项的对应的值
Items():以元组的形式打印每个项
>>>dict1={}
>>> dict1=dict1.fromkeys(range(30),'赞')
>>> print(dict1.get(32))
None
>>> dict1.get(32,'莫有')
'莫有'
In ,not in
>>> 31 in dict1
False
>>> 20 not in dict1
False
>>>
clear
>>> dict1.clear()
>>> dict1
{}
Copy()
>>> a={1:'one',2:'two'}
>>> a
{1: 'one', 2: 'two'}
>>> b=a.copy()
>>> c=a
>>> b
{1: 'one', 2: 'two'}
>>> c
{1: 'one', 2: 'two'}
>>> id(a)
54487720
>>> id(b)
6304592
>>> id(c)
54487720
Pop(),popitem(),update()
>>> a.pop(2)
'two'
>>> a
{1: 'one'}
>>> a.popitem()
(1, 'one')
>>> a
{}
>>> a={1:'one',2:'two'}
>>> a.setdefault(5,'f')
'f'
>>> a
{1: 'one', 2: 'two', 5: 'f'}
>>> b={'小白':'狗'}
>>> a.update(b)
>>> a
{1: 'one', 2: 'two', 5: 'f', '小白': '狗'}
22,集合
唯一性:
>>> num2={1,2,3,4,5,5,4,3,2}
>>> num2
{1, 2, 3, 4, 5}
不支持索引:
Num2[2]是错误的
创建一个集合:
Set()括号里可以是元组,队列,字符串
>>> set1=set([1,2,3,4,5,6,5])
>>> set1
{1, 2, 3, 4, 5, 6}
>>> set1=set((1,2))
>>> set1
{1, 2}
>>> set1=set('1234')
>>> set1
{'1', '4', '2', '3'}
可以用集合帮助队列除掉重复的元素,注意处理后输出的队列已进行从大到小的排序
>>> num1=[1,2,0,3,4,3,5,4]
>>> num1=list(set(num1))
>>> num1
[0, 1, 2, 3, 4, 5]
访问集合中的值
>>> num2
{1, 2, 3, 4, 5}
>>> 1 in num2
True
Add方法
>>> num2.add(6)
>>> num2
{1, 2, 3, 4, 5, 6}
Remove方法
>>> num2.remove(5)
>>> num2
{1, 2, 3, 4, 6}
不可变集合
frozenset
>>> num3=frozenset([1,2,3,4,5])
>>> num3.add(0)是错误的
23,文件
Open
F=open(‘文件路径G:\\test.txt’,’打开模式’)
文件打开模式:
'r' open for reading (default默认)
'w' open for writing, truncating(覆盖) the file first
'x' create a new file and open it for writing
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default默认)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)
文件对象方法:
F.close()
F.read(size)
F.tell():返回当前文件指针的位置
F.seek(offset,from)在文件中移动指针,从from(0代表文件起始位置,1代表文件当前位置,2代表文件末尾)偏移offset个字节
F.readline():以写入模式打开,如果文件存在,则在末尾追加写入
F.write(str):将字符串str写入文件,返回字符串的长度
F.writeline(seq):向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象24,模块:
>>> os.path.join('C:\\','A','B','C')
'C:\\A\\B\\C'