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的格式,返回需要的字节大小

 

posted @ 2018-10-22 10:59  clyde_S  阅读(499)  评论(0编辑  收藏  举报