当前位置: 首页 > 编程日记 > 正文

Python 语法小知识

为什么80%的码农都做不了架构师?>>>   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

相关文章:

CSS布局之-水平垂直居中

对一个元素水平垂直居中&#xff0c;在我们的工作中是会经常遇到的&#xff0c;也是CSS布局中很重要的一部分&#xff0c;本文就来讲讲CSS水平垂直居中的一些方法。另外&#xff0c;文中的css都是用less书写的&#xff0c;如果看不懂less&#xff0c;可以把我给的demo链接打开&…

DataGrid连接Access的快速分页法——动态生成SQL语句

作者&#xff1a;黎波using System;using System.Text;namespace Paging{/// <summary>/// FastPaging 的摘要说明。/// </summary>public class FastPaging {private FastPaging() {}/// <summary>/// 获取根据指定字段排序并分页查询的 SELECT 语句。/// &…

一文读懂机器学习“数据中毒”

作者 | Ben Dickson翻译 | 火火酱~出品 | AI科技大本营头图 | 付费下载于视觉中国在人类的眼中&#xff0c;下面的三张图片分别展示了三样不同的东西&#xff1a;一只鸟、一只狗和一匹马。但对于机器学习算法来说&#xff0c;这三者或许表示同样的东西:一个有黑边的白色小方框。…

chartee

2019独角兽企业重金招聘Python工程师标准>>> 一个绘制图表的类库&#xff0c;支持绘制股票的K线图&#xff0c;还可以绘制曲线、柱状图等等。 Code4App编译测试&#xff0c;测试环境&#xff1a;Xcode 4.3, iOS 5.0。 转载:http://www.adobex.com/ios/source/detail…

C语言存储类关键字

1、static这个关键字有三种用法&#xff1a;&#xff08;1&#xff09;第一种是用来修饰局部变量&#xff0c;使之成为静态局部变量&#xff1b;静态局部变量存储在数据段/bss段中&#xff0c;作用域是代码块作用域&#xff0c;生命周期是程序生命周期&#xff0c;链接属性是无…

显示DataGrid序号的一个适用的方法

作者Blog&#xff1a;http://blog.csdn.net/wangj2001/如果数据量小的话没有问题&#xff0c;一旦数据量大&#xff0c;显示特别慢&#xff0c;还有个缺点就是拖动行高时行号不随行高的变化而变动&#xff0c;出现是几个序号在一个单元格中显示。我自己对他们的算法进行总结&am…

Integer的自动缓存

2019独角兽企业重金招聘Python工程师标准>>> Interger装箱有个自动缓存的概念 Integer a 100;Integer b 100;Integer c 200;Integer d 200;System.out.println(a b); //trueSystem.out.println(c d); //false Integer是对象&#xff0c;比较的是对象在内存中…

崩溃!双十一第 4 天,某互联网公司黄了?

01打折这么狠是不是要黄了&#xff1f;&#xff1f;今年的双十一&#xff0c;开始地比以往早一些&#xff01;不知道各位程序员小哥哥们的战绩如何&#xff0c;是不是已经被一轮又一轮的定金、尾款&#xff0c;折腾到数学细胞耗尽&#xff1f;付款了也不清楚自己有没有真正的「…

FreeBSD设备驱动管理介绍(BSP: Ti AM335x)

这段时间一直在忙FreeBSD驱动移植的项目&#xff0c;因此对FreeBSD做了一定的了解&#xff0c;鉴于网上对于FreeBSD的设备驱动资料较少&#xff0c;在这里给出本人对于FreeBSD驱动管理的理解心得&#xff08;主要是USB驱动管理&#xff09;&#xff0c;希望能对开源开发者有所帮…

视障人士体验自动驾驶:携导盲犬登车,未来有望“自己开”

6月27日&#xff0c;滴滴出行首次面向公众开放自动驾驶服务。用户可通过滴滴APP线上报名&#xff0c;审核通过后&#xff0c;将能在上海自动驾驶测试路段&#xff0c;免费呼叫自动驾驶车辆进行试乘体验。现阶段&#xff0c;滴滴自动驾驶载人测试范围仅限于在上海开放测试道路上…

Listview获取选中行的值

一般情况请注意别先删除了选中行&#xff0c;又去使用。那就会导致找不到选中行。。。。。哥犯了这个错误。。。找了很长时间问题if (this.lstwlview.SelectedIndices.Count > 0) { if (MessageBox.Show("确认删除该条码&#xff1f;",…

asp.net中DataGrid性能测试

作者Blog&#xff1a;http://blog.csdn.net/yzdy/ 测试环境&#xff1a;数据库服务器:2.4G P4 CPU&#xff0c;2G 内存&#xff0c;Windows Advanced Server 2000&#xff0c;SQL Server 2000Web服务器&#xff1a;2.4G P4 CPU&#xff0c;1G 内存&#xff0c;Windows Advanced…

javassist学习笔记

2019独角兽企业重金招聘Python工程师标准>>> 介绍&#xff1a;www.javassist.org/ javassist、ASM 对比 1、javassist是基于源码级别的API比基于字节码的ASM简单。 2、基于javassist开发&#xff0c;不需要了解字节码的一些知识&#xff0c;而且其封装的一些工具类可…

金融领域首个开源中文BERT预训练模型,熵简科技推出FinBERT 1.0

出品 | AI科技大本营头图 | CSDN付费下载于东方IC为了促进自然语言处理技术在金融科技领域的应用和发展&#xff0c;熵简科技 AI Lab 近期开源了基于 BERT 架构的金融领域预训练语言模型 FinBERT 1.0。据悉&#xff0c;这是国内首个在金融领域大规模语料上训练的开源中文BERT预…

raspberry pi下使用mp3blaster播放mp3音乐

首先&#xff1a;sudo apt-get install mp3blaster mp3blaster wode.mp3会报错 但是加padsp mp3blaster wode.mp3 就可以正常播放了

把Excel文件中的数据读入到DataGrid中

作者Blog&#xff1a;http://blog.csdn.net/net_lover/使用Excel文件做为DataGrid的数据源是非常简单的&#xff0c;一旦数据被装载进来&#xff0c;就可以把数据再保存进SQL Server或XML中。我们只需要简单地使用OLE DB Provider 来访问Excel文件&#xff0c;然后返回DataSet即…

Vue 数组中更新属性值后,视图不更新,等待其他元素更新后会触发的解决办法...

因为 JavaScript 的限制&#xff0c;Vue.js 不能检测到下面数组变化&#xff1a; 直接用索引设置元素&#xff0c;如 vm.items[0] {}&#xff1b; 修改数据的长度&#xff0c;如 vm.items.length 0。 this.examineIntro.questionList[0].selList[1].url url;为了解决问题 (…

DeepMind 最新论文解读:首次提出离散概率树中的因果推理算法

翻译 | 高卫华出品 | AI科技大本营头图 | CSDN付费下载自视觉中国当前&#xff0c;一些前沿AI研究人员正在寻找用于表示上下文特定的因果依赖关系清晰的语义模型&#xff0c;这是因果归纳所必需的&#xff0c;在 DeepMind的算法中可看到这种概率树模型。概率树图用于表示概率空…

使用c#+(datagrid控件)编辑xml文件

作者Blog&#xff1a;http://blog.csdn.net/ouyang76cn/ 使用c#(datagrid控件)编辑xml文件 这个源码是我根据网上一个vb.net编辑xml文件的原理用c#重写的。除重用xml文件外.并未重用任何代码&#xff01;. 这小段代码&#xff0c;可对xml文件的记录进行删除&#xff0c;修改&am…

HorizontalTable

2019独角兽企业重金招聘Python工程师标准>>> HorizontalTable 实现了可水平滚动的 TableView。 转载:http://www.adobex.com/ios/source/details/00000761.htm 转载于:https://my.oschina.net/u/868244/blog/106055

敏捷软件开发的12个原则

作为一个软件工程师&#xff0c;软件设计和开发是最重要的技能&#xff0c;但是&#xff0c;从整个产品的角度上讲&#xff0c;项目管理能力比开发能力更重要&#xff0c;本文摘自Robert大叔的《敏捷软件开发》&#xff0c;粗体是Robert大叔的话&#xff0c;细体是我的理解。 1…

JAVE EE 企业级开发之从零开始学JAVA【51CTO技术论坛】

http://bbs.51cto.com JAVE EE 企业级开发之从零开始学JAVA 从零开始学JAVA&#xff1f;YES!本刊内容全部为午饭redking整理、撰写&#xff0c;所涉及内容均为原创&#xff0c;非常适合入门级JAVA新人学习&#xff0c;从理论到实际&#xff0c;跟随redking一起学习JAVA&#x…

打工人,打工魂,抽终身会员,成为人上人!

今年双11&#xff0c;CSDN直接来了个前所未有的福利大奖&#xff01;CSDN终身会员还有全站课程免费学&#xff01;喜欢吗&#xff1f;哈哈哈哈&#xff0c;还没完呢&#xff01;买CSDN年会员&#xff0c;不要&#xffe5;299&#xff0c;只要&#xffe5;199&#xff01;超级年…

如何创建一个用弹出窗口来查看详细信息的超链接列

如何创建一个用弹出窗口来查看详细信息的超链接列出处&#xff1a;www.dotnetjunkie.com 这篇文章来自于一位忠实的DotNetJunkie的建议&#xff0c;他最初发了一封email给我们&#xff0c;要求我们给出一个例子来说明如何在DataGrid中设置一个当用户点击时能够弹出显示其…

HashSet的使用

2019独角兽企业重金招聘Python工程师标准>>> 1.Set中元素是无序的 HashSet setnew HashSet(); set.add("a"); set.add("b"); set.add("c"); set.add("d"); System.out.println(set);//结果&#xff1a;[d,b,c,a]2.Set不允许…

python实现nginx图形界面管理

好久没有更新博客了&#xff0c;最近一直在学习python&#xff0c;于是&#xff0c;在有空闲的时间写下python视图界面管理nginx&#xff0c;写得不够好&#xff0c;不过希望能帮忙到其他童鞋&#xff0c;再次感叹&#xff0c;强大的python,不说了&#xff0c;上代码。 [rootlo…

小马智行获2.67亿美元新融资,估值超53亿美元

11月6日&#xff0c;小马智行&#xff08;Pony.ai&#xff09;宣布获得由加拿大安大略省教师退休基金会&#xff08;Ontario Teachers Pension Plan&#xff0c;OTPP&#xff09;旗下教师创新平台&#xff08;Teachers’ Innovation Platform, TIP&#xff09;领投总计2.67亿美…

DataSet导出CSV格式(ASP.NET,C#)

DataSet导出CSV格式(ASP.NET,C#)作者&#xff1a;NotMSN:notkinghotmail.comEmail:notssohu.com本文引用下面的 Microsoft .NET 框架类库命名空间&#xff1a;System.Data;System.Web.UI.WebControls;概要本文解决将DataSet导出到CSV格式问题、将DataGrid中的数据导出到CSV格式…

ArcEngine的ToolbarControl解析

转自Love Lyre原文 ArcEngine的ToolbarControl解析 ToolbarControlClass有三个主要的接口: IToolbarControl, IToolbarControl2, IToolbarControlDefault 其中,IToolbarControl2是IToolbarControl的新版本.而IToolbarControlDefault is a pure dispatch interface,始终是I…

在C#里实现DATAGRID的打印预览和打印

作者Blog&#xff1a;http://blog.csdn.net/qieyj/很多人都在论坛里问&#xff0c;如何实现DATAGRID的打印预览和打印&#xff0c;现在我就把这方面的源代码告诉大家。这段代码也花费了我1个晚上的时间&#xff0c;呵呵&#xff01;数据库是基于sql server2000自带的northwind。…