博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 语法小知识
阅读量:6501 次
发布时间:2019-06-24

本文共 3977 字,大约阅读时间需要 13 分钟。

  hot3.png

序列解包
      将含有多个值的序列解开,然后把值存放到变量中,当函数或者方法返回元组时这个特性很有用,可以把返回的序列值直接赋值给变量,在序列解包时等号两边的元素个数必须一致,否则会引发异常
链式赋值
      就是将同一个值赋值给多个变量的捷径。x=y=value
增量赋值
      x=x+1   x+=1
语句块缩进
     块中的每行都因该有相同的缩进量,一条语句后的冒号标志着语句块的开始
布尔值
     假:False、None、0、“”、()、[]、{} 都会被当作假,而其余的则为真
断言
     assert 它确保程序中的某个条件一定为真才能执行。
while 在条件为真时持续执行,直到条件为假
for 可以为一个集合中的每一个元素执行代码块,for循环字典时可以使用序列解包 ,
能用for就不用while
range()函数在迭代数字范围时很常用,range类似于分片,包含下限元素,但不包含上限元素,range返回一个元组,xrange类似于range,不过range一次返回一个元组,而xrange一次返回一个数
并行迭代,zip函数可以把两个序列粘合在一起,然后返回一个元组,不过元组中的元素都是以列表形式存在的。自拍是可以粘合不等长的序列的,当最短的序列用完时就停止了。
sorted和reversed和列表的sort、reverse方法一样,不过前者并不会改变真实列表
跳出循环
      break  跳出循环
      continue  结束当前迭代,跳到下一轮迭代
      
while true/break
列表推导是用其他列表创建新的列表的一种方法。它的工作方式类似于for循环:
      [x+x for x in range(10)]
pass del exec
      pass 语句什么都不做,它一般用作占位符。比如代码块未完成时可以使用pass
      del 删除一个对象

      exec 动态的创造python代码,然后将其作为语句执行

evel evel执行python表达式,并返回结果值

exec和evel都可以设置命名空间

lambda 创建表达式形式的匿名函数,lambda是一个表达式,不是一个语句

lambda args:expression  
args是以逗号分割的参数列表  exp是表达式
map函数会对一个序列对象中的每一个元素应用被传入的函数,并且返回一个包含了所有函数调用结果的一个列表
map和for在遍历时是等效的
map(fun,list)
对字典排序,一般都是按照字典的key进行排序
sort 会改变原始列表
sorted 不会改变原始列表
在用sort sorted进行大小写无关的排序时需要加入key参数,key参数指定按照什么方式排序,一般有str.lower unicode.lower,如果你不知道是普通字符串还是unicode,可以导入string模块,然后设置string.lower

对象通过引用传递的
不支持自增 自减之类的 i++ ++i
多元赋值  右边是元组  ,多元赋值可以实现不需要中间变量 交换两个变量的值
_xxx_  系统定义的名字
_xxx   私有变量
python对象的类型和内存都是在运行时才确定的  当对象被创建时,就创建了一个引用计数
del 删除一个对象的引用
垃圾收集器手机引用计数器为0的对象 然后将该对象销毁 并释放内存
python使用对象模型来存储数据,对象都拥有三个特性:身份、类型、值。身份可以通过内建函数ID()来得到,类型可以通过type()来得到。
所有类型对象的类型都是type。
所有内建类型均支持比较运算,多个比较运算的求值顺序为从左到右。  <> 和 != 都是不等于的意思
is操作符来测试两个变量是否指向同一个对象
int()等看起来像函数,实质上是类,当你调用时他们生成该类的一个实例,所以叫工厂函数。
函数可以后定义 但必须在该函数运行时 调用的相关函数已经声明完成 
在函数体内定义的函数 只能在函数体内部被调用 
装饰器是在函数调用之上的修饰,以@开头,装饰器可以和函数调用一样堆叠起来
可以将函数作为参数来传递,并在函数体内调用这些函数。函数可以有默认参数,但是所有必须的参数都要在默认参数之前,
*和** 支持变长参数,*是元组 表示非关键字参数 **是字典 表示关键字参数,关键字和非关键字参数都可以用在同一个函数中,只要关键字参数是最后一个参数并且非关键字元组先于它之前出现即可。
lambda关键字创造匿名函数,,lambda表达式的定义和声明必须在同一行
filter() 一个过滤函数过滤元素,返回为真的元素被保留,最后返回的对象是一个从原始队列中过滤后的队列
map() 和filter()类似,不过map返回的是所有值的列表
reduce() 
函数内部的变量有局部作用域,为了防止局部变量在函数体内把全局变量的值给覆盖掉,可以在函数体内使用global关键字,指明访问的是全局变量
python语法上支持多个函数嵌套级别,可以匹配静态嵌套的作用域。
递归.. 函数包含对自身的调用
生成器是一个带有yield语句的函数,一个生成器能暂停执行并返回一个中间结果,那就是yield语句的功能,返回一个值给调用者并暂停执行,当生成器的NEXT()方法被调用的时候,他会从暂停的地方继续执行。 py2.5中还可以将值送回给生成器,并且在生成器异常时抛出异常,并要求生成器退出。
模块
sys  sys.path 查看加载模块的路径  sys.modules 查看当前加载的模块都是那个路径下的  默认加载第一个碰到的模块
当访问一个属性时,先搜索局部空间-》全局空间-》内建空间  先搜索到的覆盖后面搜索到的
from...import.. 是导入模块的指定属性。import...as...
一个模块无论不导入多少次,只被加载一次,只从模块导入名字的副作用是,这些名字会成为你局部空间的一部分,可能会覆盖你已经存在的同名字对象。
reload()可以重新加载一个已经导入的模块,而这个模块必须是完全导入的,import
sys.modules()包含当前导入的包的名称及位置
文件
文件对象不仅可以用来访问对象,也可以访问其他类型抽象层面上的‘文件’。内建函数open() file()都会返回一个文件对象,对该文件的后续操作都需要用到该文件对象。
open(filename,mode,buffer) filename 文件名称 mode 访问模式 buffer缓存模式
读 read() 全部,返回字符串   readline() 一行,返回字符串 readlines() 全部,返回字符串列表
写 write() writelines()  并没有writeline方法
  在读文件一行 或者写文件一行时 read write  并不会删除或者添加尾部的换行符,需要你手动处理
移动 seek() 可以移动文件指针到文件中不同的位置
文件迭代器  更高效的读取文件  for eachline in fd:
close() 关闭文件  
print 语句默认在输出末尾加一个换行符,如果你read一行,然后用print输出,末尾则会有两个换行符,在print输出时,在末尾加上逗号,则可避免添加换行符
标准文件有三个 sys.stdin  sys.stdout  sys.stderr
sys.argv 是命令行参数的列表  sys.argv[0] 是该文件名  没有sys.argc 用len(sys.argv)获得
错误异常
任何在try语句块里的代码都会被检测,检查是否有异常发生。
try组要有try..except和try..finally两种方式,这两种方式是互斥的,一个try语句可以对应多个except,但只能有一个finally
在一个except语句中可以处理多个异常,但这些异常需要放进一个元祖里。
捕获所有异常,使用exception模块
try也可以和else配合,在try中没有异常被检测到的时候,执行else中的代码。
finally字句则是,无论异常是否发生都会被执行的代码
try-except-else-finally
with语句的目的在于从流程图中把try except finally关键字和资源分配释放相关代码统统去掉。
断言 assert,如果
字典
字典是唯一内建的映射类型。
只有对象是可以hash的才可以作为字典的键,因为字典是乱序的排序的,如果要获得有序的排列,在循环前使用内建sorted()函数处理一下字典
字典比较 1 比较大小 长度  2 比较键大小  3 比较值大小
集合
循环
与序列相关的内建函数有soreted() 排序 reversed() 反转 enumerate() 按照key和值遍历  zip()
break 结束当前循环 跳转到下一句
continue  终止当前循环,忽略剩余语句,然后回到循环顶端
pass  不做任何事,只是结构需要
迭代器,他为序列类的对象提供了一个类序列的接口,python的迭代无缝的支持序列对象,而且还允许程序迭代非序列类型。你可以迭代不是序列,但表现出序列行为的对象。可以迭代序列 字典 文件
列表解析,可以用来动态的创建列表,[expr for i in if xxx] seq,duiseq中的每个元素应用expr表达式,然后产生新列表。列表解析表达式可以取代内建的map lambda表达式
生成器表达式是列表解析的一个扩展,
序列 字符串 列表 元祖
查看类的属性 dir(class) 或者 class.__dict__

转载于:https://my.oschina.net/guol/blog/105124

你可能感兴趣的文章
通信常用概念
查看>>
Oracle.start with … connect by [… and] prior…order siblings by …
查看>>
PreferenceFragment 使用 小结
查看>>
stringstream 使用方法
查看>>
FreeBinary 格式说明
查看>>
oracle相关链接
查看>>
有关奇葩的mex编程时的matlab出现栈内存错误的问题
查看>>
表的复制——sql语句
查看>>
[CSS3] CSS Media Queries
查看>>
TCP三次握手和四次挥手协议
查看>>
蒙地卡罗树搜索
查看>>
sqlserver附加 mdf、ldf的方法(手记)
查看>>
YYAsyncLayer 源码解析
查看>>
Vue教程03:Vue事件、v-show、v-if指令
查看>>
Android输入法弹出时覆盖输入框问题
查看>>
Spring Boot系列21 Spring Websocket实现websocket集群方案讨论
查看>>
cloudera-manager 设置 JAVA_HOME
查看>>
基于Vue开发一个日历组件
查看>>
如何创建自己的npm包
查看>>
ThinkPHP v5 新漏洞攻击案例首曝光,阿里云已可告警并拦截
查看>>