Python的方法和语法解释
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sorted()
sorted(iterable[, cmp[, key[, reverse]]])
iterable -- 可迭代对象
cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
type()函数
type() 方法的语法:class type(name, bases, dict)
name -- 类的名称
bases -- 基类的元组
dict -- 字典,类内定义的命名空间变量。 一个参数返回对象类型, 三个参数,返回新的类型对象
PS:(isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系。 isinstance() 会认为子类是一种父类类型,考虑继承关系。 如果要判断两个类型是否相同推荐使用 isinstance())
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
setdefault()
dict.setdefault(key, default=None)
key -- 查找的键值 default -- 键不存在时,设置的默认键值(如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值)
dic[key][key].setdefault(key,default) 利用字典切片将键值增加进嵌套dic中
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
open()函数 和 write()函数
我们以任何方式使用文件,哪怕是仅仅打印其内容,都得先打开文件,这时候我们就需要open函数
filename = r'路径\文件名称' #这个称为绝对路径 ,由于反斜杠在python中视为转义标记,所以当读取路径是发生错误,可以在路径的’单引号’前加上r,r就是以原始字符串的方式指定路径
with open(filename, ‘ ’) as file : #读取和写入文件的语法
with() -- 关键字,意思就是在不再需要访问文件后将其关闭
open() -- 打开函数
filename -- 文件的名称或者一个带有文件路径的变量
as -- 关键字
file -- 就是将文件打开后放入这个变量中供输出和调用
PS:也可以在filename的后面增加一个参数,如 ‘w’ 写入模式、‘r’ 读取模式、‘a’ 附加模式、‘r+’ 读取和写入模式
PS: 写入模式会覆盖文件原有的内容,附加模式不会覆盖而是在原文本后面增加内容
PS:读取和写入模式语法的最后有一个 ‘ :’,这个标点也是语法的关键字
PS:python只在当前执行文件.py所在的目录中查找文件,如果需要打开的文件在当前目录的子目录中,可以在括号内指定文件夹名和文件名,称为即相对路径with open(‘text_files\filename.txt’)as file
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
lambda()匿名函数
在Python中,lambda的语法是唯一的
语法:lambda argument_list: expression 其中,lambda是Python预留的关键字,argument_list和expression由用户自定义
argument_list是参数列表。expression是一个关于参数的表达式。表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的
lambda函数有如下特性:
lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字
lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值
lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
format()
这个函数同理占位符,也是用来格式化传入参数的作用,但是格式和原理不同
几种方式
msg='my name is {name} my age is {age}'.format(age=18,name='egon') #这个利用format()函数来传入
msg='my name is {} my age is {}'.format(18,'egon') #利用format传入,如果没有指定传入参数,那就按照位置传入,有点类似占位符%的原理
msg='my name is {0} my age is {0}{1}{1}'.format(18,'egon') #利用format传入,在想要传入值得位置写入数字,那就按照数字的排序对应format括号里值得位置排序传入
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
fromkeys() 将列表和元组迅速创建成字典
Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值,可以将列表元组的值变成key并且对应一个None的值
romkeys()方法语法:dict.fromkeys(seq[, value]) #这里value可以设为默认None,然后再将需要的值传入
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)的值
PS:该方法返回一个新字典
例:
seq = ('Google', 'Runoob', 'Taobao')
dict = dict.fromkeys(seq)
print "新字典为 : %s" % str(dict)
dict = dict.fromkeys(seq, 10)
print "新字典为 : %s" % str(dict)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
关键字: global \ nonlocal
如果想要在局部修改全局名字对应的值是不可变类型时.必须在局部用global关键字加以声明
x=111
def func():
global x
x=222
PS:在global申明x后,则全局的x原有值111变成了222
如果想要在局部修改全局名字对应的值是不可变类型时.必须在局部用global关键字加以声明
x = 111
def func():
h = 222
def boo():
y = 444
nonlocal h
h=333
PS:这里局部函数内声明要修改局部参数h的值,则会开始一层一层查找,直到找到匹配的,如果未找到则报错
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
模块调用的时候不运行模块内的调用命令,作为导入调用,而不是右键运行
if __name__ == __main__:
func()
func() #这样在导入模块的时候不会运行文件内执行代码
PS:当xxx.py文件被当成脚本文件直接运行时(右键直接运行的文件就是脚本文件)__name__的值为__main__
PS:当xxx.py文件被当成模块导入时__name__的值为模块名
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
struct模块(用于网络传输的字节转换模块)
用处
1、按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时,不能传输int,此时先将int转化为字节流,然后再发送
2、按照指定格式将字节流转换为Python指定的数据类型
3、处理二进制数据,如果用struct来处理文件的话,需要用’wb’,’rb’以二进制(字节流)写,读的方式来处理文件
4、处理c语言中的结构体
struct模块中的函数
PS:包装的方法由fmt指定。被包装的参数必须严格符合fmt。最后返回一个包装后的字符串
ps:包装后发送的数据是字节流形式,在接收端需要unpack解析后才能获取
struct.pack(fmt,v1,v2,.....)
将v1,v2等参数的值进行一层包装,包装的方法由fmt指定。被包装的参数必须严格符合fmt。最后返回一个包装后的字符串。
struct.unpack(fmt,string)
顾名思义,解包。比如pack打包,然后就可以用unpack解包了。返回一个由解包数据(string)得到的一个元组(tuple), 即使仅有一个数据也会被解包成元组。其中len(string) 必须等于 calcsize(fmt),这里面涉及到了一个calcsize函数。struct.calcsize(fmt):这个就是用来计算fmt格式所描述的结构的大小
PS:打包是什么标准,相对解包也需要同样的标准
PS:解包出来的值是以元组的形式呈现
格式字符串(format string)由一个或多个格式字符(format characters)组成,对于这些格式字符的描述参照Python manual如下
根据fmt的格式,返回需要的字节大小