C语言简短探讨python中的讲话和语法

python程序结构

  python“一切都对象”,这是接触python听到最多的下结论了。在python中极其基层之单位应当就是对象了,对象要负表达式建立处理,而表达式往往有让语句被,多长达告句组成代码块,多单代码块再组成一整个主次。python的中心其实是由于语句和表达式组成。所以于这边大概探讨一下python中的讲话和表达式。

  因为后或会见触发到零星个版的python,所以这里谈话同样说python2与python3之言语差异:

  1.python2中没有nolocal语句。

  2.print于python2着凡是一样漫长语句,在python3遇虽是一个措函数。

  3.python2丁2.5后头版本try/except和try/finally合并了。

  4.with/as于python2惨遭无可用,若想用要的导入模块__future__import
with_statement。

python语法

  说实话,作为第一派到上之语言,python给自家的感到就是略简洁清晰,与事先习过之C语言不同,python的语法成分很少,python的嵌套语法就是首行末尾使用冒号,代码块省去括号(括号是可选的),按照缩进的不二法门开。并且python每行之间了不欲采用分号,一行的了断就是停止了该语句。缩进结束就象征这段代码块的完结。所以缩进语法是python的一个主导语法。正是以马上一点,python程序员可以齐的抒写起因程序逻辑结构以直方式来就的代码。这让python的程序代码更加富有可读性了。

  还有几碰值得注意的地方:

  1.python的缩进虽然没有特别之确定,但是约定俗成的以首只缩进行首缩进4独空格,当然有些程序员喜欢下tab键来成功,本人作为刚起读书python的初手,其实也是空格党,因为tab在稍条件里是8只空格,还有少数老大关键之是,最好不用是因此混合着tab和空格的缩进方式,并且这种办法于python3吃还导致程序无法正常操作了。

  2.python偶发也会见面世有平推行挤上前多单告知句的动静,这个时段用利用分号将其隔开。这吗是python中绝无仅有用到支行的地方,作为语言界定符。

  3.当一个报句过长用翻过多实行的时候可以应用括号,方括号,花括号括起来,这样告诉词以直运转到括号闭合的那一行。除了括号之前还是因此了\作跨行工具,不过这种措施不仅关注、维护起来比较不方便,而且\末端可能没空格,所以\换行的措施都大少动了。

赋值操作

  1.赋值操作知识变量引用对象要休copy;

  2.变量在首不良赋值时被创造;

  3.得先行定义后引用;

  4.模块导入、函数和好像的定义、for循环变量以及函数参数都是餐饮赋值运算。

  赋值语句的样式:

  1.name=‘jeff’

  这是最最广的复制方式,把变量名以及单个对象开展了绑定。

  2.元组和列表分解赋值:name,age=‘jeff’,‘111’,[name,age]=[‘jeff’,‘111’]

  当赋值符号左边是元组或者列表时,python会拿右侧对象及左侧对象从左往右配对。

  可以扩大为序列类型的赋值语句,任何变量名的队列都只是赋值给任何值得序列,a,b,c,d=’jeff’,这种序列赋值在python中叫通用化了,即有限止可以是随机序列,比如:[a,b,c]=(1,2,3)只要序列长度等即可,最终还以右手扩展成自由而迭代对象。

  3.恢弘的班解包:a,*b=’jeff’

  这种方法适用于python3吃,a只相当一个假名,剩余字符被*引用。并且*b可以出现在赋值变量的妄动位置,比如a,*b,c=‘a,b,c,d’。带*号不论匹配几单宗都见面于那个赋值一个列表,即使不匹配到吗会见赋值空列表。一个赋值语句只能有一个带动*的名号,还得描绘成*a,=[1,2,3,4]。可以说这种解包方式都取代了片方式,称为更宽泛的便民形式。

  4.大抵再目标引用:a=b=‘111’

  两只变量都让给予了同等的价值。上述等式其实就是是b=‘111’,a=b的大概表达。这里少单变量都对准同一个内存里的目标,即引用。

  5.增强型赋值语句:a+=1

  输入较少,执行于快。增强赋值语句有三生优点:

  (1)输入减少;

  (2)左侧只有需要计算同一浅,x=x+y中x会油然而生些微破,必须实行两破,所以相比而言,增强型赋值语句执行会重复快;

  (3)对于支撑原处修改的靶子见面自动执行原处修改运算。

  :python中并未a++,a–这种递增运算符没因为python中不可变对象无法展开原处修改。

  对于扩大列表有星星点点栽方法,一栽是联合‘+’,另一样种植是extend方法,两者,合并对共享对象引用产生的副作用更有些,但是合并操作必须创造一个初的目标,再将左手复制到列表中,再管右的复制到列表中,这样运行速度就会见格外缓慢。在滋长赋值语句被,会自动调用更快的extend方法。

  注:python的保留字不可以看做是变量名来赋值。

表达式语句

  表达式语句通常用于原处修改,例如l.append(a),但是并无会见管修改后的列表返回,事实上他们回去的是None对象。如果以之表达式赋值给变量,那么单纯会丢该列表。

  print语句

  标准输出流(stdout),标准输入流,错误流是本子启动时创造的老三栽多少连接。

  python3中的print:

  print是一个置于函数,用要字参数来表示模式。因为凡放函数的一律种,所以她回到的凡None。

print(print(1))
运行结果:
1
None

  print的基本语法是:print([obj,…][,sep=’
‘][,end=’\n’][,file=sys.stdout])

  其中方括号被情节吗而挑选内容。sep,end,file使用时如给出name=value的花样加以参数。

  sep是每个对象的文书中插入一个字符串,默认是单科空格,传一个空字符串将会晤杀分隔符。

a=1;s=2;d=3
print(a,s,d)
print(a,s,d,sep=',')
运行结果:
1 2 3
1,2,3

  end是长打印在文件末尾的字符串,默认\n。

a=1;s=2;d=3
print(a)
print(s,end=' ')
print(d,end=' ')
运行结果:
1
2 3 

  file指定发送至之公文,默认是sys.stdout。这实质上是流的重定向的等同栽形式。

  print只是也咱提供了简要的sys.stdout对象的大概接口,,print为咱藏了众多细节,只是提供于咱一个略打印的接口。

import sys
sys.stdout.write('hello world\n')
运行结果:
hello world

  可应用sys.stdout=open(‘file’,‘mode’)方式重定向流的输出。python3被这种重定向是小的,普通的print还是会打印至原始输出流。

  python2中的print语句:

  print x,y等价于3中的print(x,y);

  print x,y,等价于3中的print(x,y,end=‘ ’);

  print >>afile,x,y等价于3中的print(x,y,file=afile);

if测试与语法规则

  短路计算

  首先,and和or返回的必定是一个对象,在or测试着,python在找到第一独真值的地方停下。

print(2 or 3)
print(0 or 3 or 2)
运行结果:
2
3

  if/else三元表达式

  A = Y if X else Z
,X为确实时候,结果为Y,X为假的下,结果也Z。这吗是死计算。当然为堪写成A=((X
and Y)or Z)换句话说即是“if x then y else z”.

while和for循环

  while循环

  while是python中极度通用的迭代结构,并且while也是生可选else部分的(离开while循环并且没有在此之前break的时才会尽)。

  break、continue、pass、else

  break:跳出整个循环语句。

  continue:跳出本次巡回到下一致坏巡回的开头处。

  pass:无运算的占位语句,常用在函数定义等,他和None的意思大相似,不过他有着自带的含义:“以后想吓又补偿”的意思。

  else:只有当循环正常了的下才会尽。

  for循环

  for循环的精神实际上是一个列迭代器,用于遍历任何序列对象内对的素或说而迭代对象的装有因素。逐个拿行对象中之要素赋值给作用域中的变量,break,continue也适用于for循环。

  for循环遍历可迭代对象时当每次循环的时候只是念一个,并无会见以不折不扣对象读到内存,这样运行更快还省内存,例如在文件读取的时光,用for循环遍历远胜于readlines。可以说for循环比while循环更高效。

  并行遍历,zip与map:

  zip函数可拿n个参数的n个参数的序列转换成为n个参数的元组:

print(list(zip(['1','2','3'],(4,5,6),['7','8','9'])))
运行结果:
[('1', 4, '7'), ('2', 5, '8'), ('3', 6, '9')]

print(dict(zip(('1','2','3'),(4,5,6))))
运行结果:
{'3': 6, '2': 5, '1': 4}

  zip函数当排长度不同时,会坐极其差序列截断得到元组。

  python2吃的map函数和zip极为一般,只是以当长度不同时,不下最差截断,而是用None补齐。因为太相像了,所以于3着为砍伐掉了。但是本map依然可以以,他还生外用法:

print(list(map(ord,['1','2','3'])))
运行结果:
[49, 50, 51]

  enumerate函数:计数器作用的函数。

for (a,b) in enumerate('jeff'):
    print(a,b)
运行结果:
0 j
1 e
2 f
3 f

  enumerate函数返回的凡生成器对象,每次循环都是next()一不好,返回(index,value)元组。

  本节总结是于python学习手册第二片底微总,对于迭代的定义,在后面的学过程遭到见面仔细为明白,在描绘的过程被发生什么尴尬的地方要大神们给指正。