首页 > temp > python入门教程 >
-
学python的第5天(按第五天算吧)
没想到之前刚发了园子就开始停了。这段时间有些笔记我都记在文档里了。在这里就直接发出来了。东西也不是很多。最近我打篮球崴脚了象个馒头,从单位回家了,也没啥心情学习了。最近效率几乎为零。但是人得往上奔啊!最近写的东西也很乱,凑合一下吧
若元组中只有一个元素,务必要添加一个逗号,否则不是元组 a = (,)
Python面试题
V1 = 10 and 99 输出啥? 99
学会在py中如果将0、“ ”、[ ] 、{ }、()、None转成布尔值的时候,false,其他都是true
现在将第一个值转成布尔值:true,整体结果取决于那个值(后面的),结果就是那个值
所以 v2=0 and 22 输出 0
Or 和and一个道理
如果and和or同时出现的时候,and优先级大于or的优先级
Python操作文件
- 找到文件,打开 f = open(filename,mode=”…”) mode= w r a 。文档里面有数据的时候,追加数据mode = “a” 如果要是w的话文档会被清空之后再追加
- 读,修改 f.read( ) 读所有 f.write(sdfdsfdsfdsf)写
- 保存&关闭 f.close() 自动保存
文件打开模式:只能以一种模式操作文件。读 、写、打开。不能同时。就是在write的时候不能print(f.read() ) 会报错
读 r read
写 w write
打开 a append
For i in range(100) 相当于生成一个列表[0 ……99]
其他常用方法:filename.readline(number) 读取前……个字符。为空的话读第一行
Seek(number)光标从初始位置走多少个字节。中文一个字三个字节。英文一个
f.tell ( ) 返回当前光标位置
打开文件的三种混合模式:mode = ……
w+ 写读,创建新文件,写一段内容,再读出写出的内容。没什么卵用
r+ 读写。能读能写,但都是写在文件的最后,和追加一样
a+ 追加读。文件一打开时光标就会在文件尾部,写的数据全毁是追加形式
修改文件
Str.strip () 移除字符串头或尾的指定字符,默认为空格。中间字符不动
Str.split()
字典 dict.items()之后,返回的是带有键值元组的列表,也就是说每个元组中有两个元素。可以用两个变量循环,解出元组中的键和值。 for v,a in dict.items():
函数:
定义函数:def name(): # 函数名。括号内可传参数,没有参数空着
函数名写法:say_hi() 下划线式
函数的参数只能在函数中用。想要调用函数的结果,必须要函数return返回函数的结果才可以用
形参:相当于占位符。只在函数内部有效
实参:可以是常量,变量。表达式,函数等
位置参数:就是按着形参的顺序传入实参
关键参数:传入实参无视顺序,实参为:形参=…
优先级:未知参数 > 关键参数/默认参数
非固定参数:定义函数时,不确定之后调用时会传入几个参数进来。实参加入*args,**kwargs
*args是元组,用来传入位置参数(value) **kwargs是字典,用来传入关键参数(name=value)
def info(name,*args,**kwargs):
Print(name,args,kwargs)
Info(“alex”,22,beijing,sex=”male”) 位置参数以元组形式存储,关键参数以字典形式存储
形参有几个,实参就要传几个。按顺序传
默认参数:在设形参的时候给形参赋值,用实参传值的时候如果没有传入默认参数的值,则该参数按默认参数的值来走。 默认参数必须要写在所有参数最后
Python中,函数内部定义的变量是局部变量。外部定义的变量是全局变量
变量查找顺序 局部>全局。现在本层找,没有一层,一层往上找
函数内部可以调用全局变量。但是不可更改全局变量。局部变量只能在函数内部使用,外部无法调用。
Locals() 所有局部变量 print(locals())
Globals() 所有全局变量 print(glocals())
Locals 和 globals 都是字典形式
函数内部声明全局变量:
global name
Name = “alex” 先声明,后赋值。要分开
外部列表,集合,字典传入函数中,在函数中更改之后外部随之更改
函数嵌套:函数中有函数
内部函数和局部变量一样,只能在局部使用
匿名函数:没有名字的函数。用lambda声明。 c = lambda x,y: x**y
匿名函数中不可加循环,判断等,最多的就是三元表达式了。
高阶函数:函数的参数除了str,int,list,dict,cuple等,参数为函数
Abs() 取绝对值
高阶函数条件满足一个即可:1.接受一个或多个函数作为输入
- return返回另一个函数
Def get_abs(n): #定义取绝对值的函数
Return(int(str(n).strip(“-”)))
Def add(x,y,f): #f作为可传入的函数的形参
Return f(x)+f(y)
Print(add(5,10,get_abs)) #调用参数函数,参数函数不加(),否则就是直接调用了
函数的递归: 自己调用自己。默认有次数限制(1000左右,忘了),每次递归是一次压栈,次数太多会造成栈溢出。
练习:用二分法递归查询一个数是否在列表中存在
一些内置函数:
Bin()转二进制
Enumerate():将列表的索引和值以元组方式一对一打印 enumerate(list)
名称空间:存放名字的地方。若变量x=1,1存放于内存中,那么x存放在哪呢?名称空间就是存放名字x与1绑定关系的地方
名称空间有四个:
locals:函数内部的名字空间,一般包括函数的局部变量以及形式参数
globals:当前模块空间。类似全局变量
enclosing function:在嵌套函数中外部函数的名字空间,若fun2嵌套在fun1中,对fun2来说,fun1的名字空间就是enclosing
__builtins__:内置模块空间,存储内置方法
闭包现象:函数正常执行完毕之后会释放掉,但是由于内层函数还在调用外层函数中的变量,而且外层函数返回了内层函数,这种情况叫闭包。
Def out():
Name = “bob”
Def inner():
Print(“inner”,name)
Return inner
装饰器:在不改变源代码和调用方式的情况下添加功能
列表生成器
函数生成器:函数中的print改成yield就好。yield暂停。P92
线程:cpu执行的任务单元
迭代器:
可迭代对象iterable 可迭代就是可循环,可遍历
Isinstance()判断对象是否是可迭代对象isinstance({} , iterable)返回布尔值
模块:可以避免变量名,函数名的冲突
模块分类:标准模块(内置模块)300个左右
第三方模块 18W多 额…… 需要单独安装 pip install
自定义模块:自己写的
调用:import ……模块名称
From 模块名 import 模块中的方法 from my_moudle_a import sayhi方法可不加参
使用模块中的方法:moudle name.方法 my_moudle_a.sayhi() #方法之后要加参数
模块调用:一般先从当前文件下寻找模块,再按顺序从其他的文件找
第三方模块,一般通过pip安装。其他方法用的比较少。文件中存放第三方模块的文件夹Site-packages
Pip安装模块。如果电脑有多个版本可以选择python的版本。命令的时候pip3(py3)pip2
一般pip下载的来源地址服务器在国外,下载很慢。所以从国内的镜像网站豆瓣源下载。需要指定下载地址。
例如:pip install -I http://pypi.douban.com/simple/alex_sayhi –trusted-host pypi.douban.com
系统调用模块:os 、sys
时间处理模块:time 、datetime
随机数模块:random(可用来做验证码)扎金花
序列化:pickle、json 把字典里的东西通过一定规则存到硬盘上。反序列化:把硬盘上的数据通过一些列规则转成字典类型
来源:https://www.cnblogs.com/xiaoyuheng/p/14599172.html