这篇文章主要介绍了开始学习python的第一步需要知道的知识(变量和控制语言使用方法),需要的朋友可以参考下
简介
有兴趣可以看看:解释性语言+动态类型语言+强类型语言交互模式:(主要拿来试验,可以试试ipython)
代码如下:
$python
>>>print'helloworld'
脚本
代码如下:
#!/usr/bin/envpython
print'helloworld'环境:建议python2.7+easy_install+pip+virtualenv+ipython缩进
Python函数没有明显的begin和end,没有标明函数的开始和结束的花括号。唯一的分隔符是一个冒号(:),接着代码本身是缩进的。例子:
代码如下:
#函数
deffunc(value):
printvalue#缩进ifvalue==1:
value+=1
elifvalue==2:
pass
else:
value+=10标识符
变量是标识符的例子。标识符是用来标识某样东西的名字。在命名标识符的时候,你要遵循这些规则:1.python中的标识符是区分大小写的。2.标示符以字母或下划线开头,可包括字母,下划线和数字,大小写敏感3.以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“fromxxximport*”而导入;
以双下划线开头的(__foo)代表类的私有成员;
以双下划线开头和结尾的(foo)代表python里特殊方法专用的标识,如init()代表类的构造函数。4.标识符不能是保留字
代码如下:
andelifglobaloryield
assertelseifpass
breakexceptimportprint
classexecinraise
continuefinallyisreturn
defforlambdatry
delfromnotwhile
变量赋值语句1、赋值语句建立对象引用值
2、变量名在首次赋值时会被建立
3、变量名在引用前必须先赋值,不能引用未声明赋值的变量
赋值方式简单赋值
Variable(变量)=Value(值)
代码如下:
s=‘spam'
多变量赋值python中原始的元组和列表赋值语句形成,最后已被通用化,以接受右侧可以是是任何类型的序列,只要长度相等即可。注意,长度一定相等
Variable1,variable2,...=Value1,Value2,...
代码如下:
s,h=‘a','b'元组赋值,位置性【常用】
[s,h]=[‘a','b']列表赋值,位置性
a,b,c,d=‘spam'序列赋值,通用性
a,*b=‘spam'拓展序列解包(python3)
多目标赋值
代码如下:
a=b=variables=h=‘spam'多目标赋值
注意:多个变量内存中指向同一对象,对于可变类型需要,修改一个会对其他造成影响自变赋值
代码如下:
如+=,-=,*=等。在自变赋值中,python仅计算一次,而普通写法需计算两次;自变赋值会修改原始对象,而不是创建一个新对象。
代码如下:
s+=42增强赋值
x+=y
优点:
代码如下:
左侧只需计算一次,优化技术自动原处修改,更快
l+=[]原处修改
l=l+[]复制,生成新的对象
运算符
一个表达式可以分解为运算符和操作数运算符的功能是完成某件事,它们由如+这样的符号或者其他特定的关键字表示运算符需要数据来进行运算,这样的数据被称为操作数运算符优先顺序列表(从最高到最低)
代码如下:
运算符描述
'expr'字符串转换
{key:expr,...}字典
[expr1,expr2...]列表
(expr1,expr2,...)元组
function(expr,...)函数调用
x[index:index]切片
x[index]下标索引取值
x.attribute属性引用
~x按位取反
+x,-x正,负
x**y幂
x*y,x/y,x%y乘,除,取模
x+y,x-y加,减
x<<y,x>>y移位
x&y按位与
x^y按位异或
x|y按位或
x<y,x<=y,x==y,x!=y,x>=y,x>y比较
xisy,xisnoty等同测试
xiny,xnotiny成员判断
notx逻辑否
xandy逻辑与
xory逻辑或
lambdaarg,...:exprLambda匿名函数
结合规律运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算计算顺序默认地,运算符优先级表决定了哪个运算符在别的运算符之前计算。然而,如果你想要改变它们的计算顺序,你得使用圆括号。好的做法:默认对复杂的运算加括号,而不是依赖于默认结合和计算顺序真值
真值测试1、任何非零数字或非空对象都为真
2、数字零,空对象以及特殊对象None都为假
3、比较和相等测试都会递归地运用到数据结构中
4、比较和相等测试会返回True或False
真值表
代码如下:
对象/常量值
""假
"string"真
0假
2>=1真
-2<=-1真
()空元组假
[]空列表假
{}空字典假
None假
布尔表达式
三种布尔表达式运算符
代码如下:
xandy
xory
notx
比较
数字通过相对大小进行比较
字符串时按照字典顺序的,一个字符一个字符比较
列表和元组从左到右对每部分的内容进行比较
字典通过排序后的键值列表进行比较
数字混合类型比较在python3是错误的,但是python2.6支持,固定但任意的排序规则布尔数
有两个永远不改变的值True,False
布尔是整型的子类,但不能被再继承
没有nonzero()方法的对象的默认值是True
对于值为0的任何数字或空集,值False
在数学运算中,Bollean值的True和False分别对应于1和0
基本控制流if
基本的条件测试语句,用来判断可能遇到的不同情况,并针对不同的情况进行操作基本形式
代码如下:
if<条件>:
<语句>
elif<条件>:
<语句>
else:
<语句>注意python根据缩进判断,elif和else部分是可选的例子:
代码如下:
a=1
b=2
c=3;d=4#两个放一句用分号隔开,不过建议分行ifa<bandc<d:
print("brancha")
elifa==b:
print("branchb")
else:
print("branchc")
switchpython本身没有switch语句,若需要,用if/elif/else实现完成同样的工作,某些情况可以考虑用字典也可以用dict的形式if/else三元运算符
代码如下:
A=((XandY)orZ)
A=YifXelseZ
例:a=‘t'ifxelse‘a'
[code]for基本语法循环控制语句,可以用于循环遍历某一序列else块可选,在循环终止的时候执行,若是break终止循环,else不执行格式:
[code]
for<对象变量>in<对象集合>:
if<条件>:
break
if<条件>:
continue
<其他语句>
else:
<其他语句>注意:1.对象集合可以是列表,字典以及元组等
2.for..in循环对于任何序列都适用
3.for遍历一个字典时,遍历的是字典的键
代码如下:
rang&xrange
可以通过range()函数产生一个整数列表,完成计数循环
代码如下:
range([start,]stop[,step])
start可选参数,起始数
stop终止数,若为x,产生从0-(x-1)的整数列表
step可选参数,步长,未写默认为1
range(1,5)包含序列为[1,2,3,4]xrange和range区别(python3.x的可无视)在Range的方法中,它会生成一个list的对象,但是在XRange中,它生成的却是一个xrange的对象,当返回的东西不是很大的时候,或者在一个循环里,基本上都是从头查到底的情况下,这两个方法的效率差不多。但是,当返回的东西很大,或者循环中常常会被Break出来的话,还是建议使用XRange,这样既省空间,又会提高效率。
代码如下:
>>>printrange(1,5)
[1,2,3,4]
>>>printxrange(1,5)
xrange(1,5)
在上面语句中,range返回了一个普通List,而xrange返回了一个特定的xrange类型的对象。由于xrange方法也创建整数list(其使用相同参数),所以它与range方法非常相似。但是,xrange方法仅在需要时才在list中创建整数。当需要迭代大量整数时,xrange方法更适用,因为它不会创建极大的list,那样会消耗大量计算机内存。while与if语句类似,含一个条件测试语句,循环,允许重复执行一个语句块。可选else语句块,同for的else块。格式:
代码如下:
while<条件>:
if<条件>:
break
if<条件>:
continue
<其他语句>
else:
<语句>
说明:while循环条件变为False的时候,else块才被执行
若是使用break结束循环,while可选的else块不执行
python没有dowhile或dountil循环语句
break&continue&pass
break,终止循环语句,停止循环,若是for/while循环中终止,其else不执行continue,结束当前,进入下一轮循环-跳到最近所在循环的开头处(来到循环首行)pass什么事也不做,只是空占位语句,它用于那些语法上必须要有什么语句,但程序什么也不做的场合循环else块:只有循环正常离开时才会执行,即如果你从for或while循环中break终止,任何对应的循环else块将不执行。记住,break语句也可以在for循环中使用其他编写循环的技巧:
在迭代过程中修改迭代序列不安全(只有在使用链表这样的可变序列时才会有这样的情况)。如果你想要修改你迭代的序列(例如,复制选择项),你可以迭代它的复本。使用切割标识就可以很方便的做到这一点>>>代码如下:forxina[:]:#makeaslicecopyoftheentirelist
...iflen(x)>6:a.insert(0,x)在字典中循环时,关键字和对应的值可以使用iteritems()方法同时解读出来
代码如下:
>>>knights={'gallahad':'thepure','robin':'thebrave'}
>>>fork,vinknights.iteritems():
...printk,v
...
gallahadthepure
robinthebrave在序列中循环时,索引位置和对应值可以使用enumerate()函数同时得到。
代码如下:
>>>fori,vinenumerate(['tic','tac','toe']):
...printi,v
更多信息请查看IT技术专栏