首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

Python学习笔记(二)

2013-12-09 
Python学习笔记(2)**python**?条件表达式python使用缩进作为其语言的分组方法如果缩进不统一,程序报错if 1

Python学习笔记(2)

**python**

?

条件表达式

python使用缩进作为其语言的分组方法

如果缩进不统一,程序报错

if 1 > 2:

? ?print("ok")

? ?print("ok")

? ?print("xx")

print("no")

==> no

if 1 > 2:

? ?print("ok")

? ?print("ok")

? print("xx")

print("no")

==> IndentationError: unindent does not match any outer indentation level

x = 99

if x > 90:

? ? print("A")

elif x > 80:

? ? print("B")

elif x > 70:

? ? print("C")

else:

? ? print("D")

?

取反,用not,不能用!

if not 0

? ? print("OK")

?

循环遍历:

for i in range(10):

? ? print("hello ,world")

for i in [1,3,4,5,5]:

? ? print(i)

?

for i in range(1,10):

? ? print(i)

==> 1,2,3..10

for i in range(1, 10, 2):

? ? print(i)

==> 1,3,5,7,9

?

列表的遍历:

?

d = {2:333, 4:444, 5:666}

for k,v in d.items():

? ? print(k)

? ? print(v)

else:

? ? print("ending")

结果==>

2

333

4

444

5

666

ending

-------------------------------

比较特殊的,python中for循环可以接else,当循环正常执行完毕后

执行else中的语句,如果循环中断,则不会执行else的语句

d = {1:333, 2:444, 3:666, 4: 444, 5: 777}

for k,v in d.items():

? ? if k == 2:

? ? ? ? break

? ? else:

? ? ? ? print(k)

? ? ? ? print(v)

else:

? ? print("ending")

结果==>?

1

333

?

pass 代码桩,什么也不做

continue 继续

exit() 退出程序

---------------------------------------

d = {1:333, 2:444, 3:666, 4: 444, 5: 777}

for k,v in d.items():

? ? if k == 3:

? ? ? ? break

? ? if k == 2:

? ? ? ? pass

? ? ? ? continue

? ? if k == 5:

? ? ? ? exit()

? ? else:

? ? ? ? print(k)

? ? ? ? print(v)

else:

? ? print("ending")

?

while 循环:

--------------------------------------------

$ cat while.py

当while条件为false时,才会执行else中的语句

x = ""

while x != "q":

? ?print("hello")

? ?x = input("input something, q for quit: ")

? ?if not x :

? ? ? ?break

else:

? ?print("ending")

?

函数:

------------------------------

?

a = 2

b = 3

def add():

? ? c=a+b

? ? print(c)

?

add()

==> 5

这个有点不安全吧,要是函数体中得变量不小心和函数外的变量重名,那不是麻烦了?

?

def new_add(x, y):

? ? z = x + y

? ? print(z)

?

add()

new_add(3,4)

?

传参

----------------------------------

def add(x = 3, y = 4):

? ? c = x + y

? ? print(c)

?

add()

add(y = 5) #可以单独传参,但是如果x没有默认值就不行了

?

?

?

全局变量

-------------------------

$ cat global.py

x = "global var"

?

def change():

? ? x = 100

?

print(x)

==> "global var"

?

------------------------------

$ cat global.py

x = "global var"

?

def change():

? ? global x

? ? x = 100

?

change() #执行了change()方法以后,global x ,相当于给x重新赋值了

print(x)

==> 100

?

?

元组作为参数

-------------------------

$ cat function1.py

?

def add(x, y):

? ? ? ? print("%s : %s" % (x,y))

?

add("hello", "world")

?

a = ("hello", "world")

b = ("hello", "pthon", "world")

?

?

add(a) ?#错误,a作为一个整体传给了x,报参数错误

add(*a) #正确, 当元组元素的个数于函数参数的个数相同的时候,则x=a[0], y=a[1]

add(*b) #错误, 当元组元素的个数不等于函数参数的个数时,报参数错误

add(y="world", x="hello") #正确,可以指定参数传值,也就是说顺序没有关系

?

字典作为参数

-------------------------------------

def add(x, y):

? ? ? ? print("%s : %s" % (x,y))

?

?

d={"y":"world", "x":"hello"}

d1={"y":"world", "x":"hello", "z": "python"}

add(**d) #正确输出==> hello, world

add(**d1) #错误,add() got an unexpected keyword argument 'z'

?

?

接受多余参数?

------------------------------------------------------

*args(剩余的参数作为元组), **args(剩余的参数作为字典)

?

$ cat function2.py

?

def p(x, *args):

? ? ? ? print(x)

? ? ? ? print(args)

?

p(1)

p(1,2,3)

==>1

==>()

==>1

==>(2, 3)

p(x=1,y=3)

==> p() got an unexpected keyword argument 'y'

y=3不能作为多余参数保存在args中,可以用**args来保存

-----------------------------------------------------

$ cat function2.py

?

def p(x,**args):

? ? ? ? print(x)

? ? ? ? print(args)

?

p(1)

p(x=2,y=4)

==>1

==>{}

==>2

==>{'y': 4}

?

p(1,x=3) #错误,第一个参数付给了x,那么相当于穿了x=1,x=3

==>p() got multiple values for argument 'x'

?

同时接受*args, **args的情况

------------------------------------------------------

def p(x,*args,**other_args):

? ? ? ? print(x)

? ? ? ? print(args)

? ? ? ? print(other_args)

?

p(1)

==>1

==>()

==>{}

p(3,3,z=5)

==>3

==>(3,)

==>{"z":5}

参数的顺序不能变

p(y=3,3,5) #错误,SyntaxError: non-keyword arg after keyword arg

p(3,4,y=4,5) #错误,SyntaxError: non-keyword arg after keyword arg

?

lambda表达式

----------------------------------

lambda函数是一种快速定义单行的最小函数, 从lisp借用而来,可以用在任何

需要函数的地方

?

g = lambda x,y: x+y

g(1,2) ==> 3

?

lambda的好处:

1.写一些执行脚本,省去函数的定义过程,让代码更简洁

2.省去抽象函数命名的问题

3.让代码更容易理解(sometime)

?

?

swtich, python中没有swtich,可以使用字典来实现switch

------------------------------------------------------

x=1

y=4

dd = {

? "+": x+y,

? "-": x-y

}

print(dd)

print(dd.get("+"))

print(dd.get("-"))

?

?

内置函数

----------------------------------------------------

查看文档:

help(str.replace)

?

str.capilize()

str.split()

str.replace()

?

?

异常处理

--------------------------------------------

?

contents = {"tomato":4, "banana":3}

try:

? if contents["apple"] > 3:

? ? print("i have apples")

except (KeyError) as error:

? print("i have no %s" % error)

?

==> i have no 'apple'

?

?

?

?

?

?

? ? ? ?

?

?

?

?

热点排行