您的位置:首页 > 编程语言 > Python开发

Python入门基础(3)——函数参数与语法结构

2018-06-12 22:43 567 查看
1、条件判断:(1)if 判断
a = 100 ;   b  =200 ;   c=300;
if  c == a:             #注意冒号
print(a)
elif  c==b:             #没有elseif,只有elif
print(b)
else :
print(c)
注意:在Python中,是没有switch的
(2)None的判断
x = None
if x is None:   #可以用==,但是用is更加直接
print 'x is None'
if not x:       #因为x是None,所有not x就是true;也可以用x is not None
print 'x is None'
(3)for循环
s = 0
for i in range(0, 101):   #输出0-101,步长默认为1
s += i
print(s)
for i in range(0, 30, 5):  #输出0-30,步长为5
print(s)
(4)while循环
s = 0
i = 0
while i <= 100:
s += i
i += 1  #根据缩进来判断其作用域是否为while
print(s)
(5)continue、pass、break
for i in range(0, 100):
if i < 10:
pass      #什么也不做
elif i < 30:
continue  #进入下一个循环,其实和上面差不多
elif i < 35:
print(i)   #进行操作
else:
break      #跳出for循环,
注意:上面最后的break也可以换成return,不过break只是跳出循环,而return则是跳出函数(更广)
2、函数与参数的定义:(1)函数定义与默认参数
def func(x, y = 500):   #y的默认参数值为500,可以不指定y的值
print(x, y)

func(150)               #x为150,y为500,默认位置,默认值
func(100, 200)          #x为100,y为200,默认位置
func(y = 300, x = 100)  #x与y的位置可以调换,但是必须要指定名称

(2)可变参数
def func(name, *numbers): #第一参数赋值给name,其他打包为元组
print(name)           #’Tom‘
print(numbers)        #1,2,3,4,'a','b';元组什么类型都可以
print(numbers[1])     #2
print(numbers[4])     #'a'

func('Tom', 1, 2, 3, 4,'a','b')

(3)关键字参数
def func(name, **kvs):   #**表示key/value格式,自动生成字典
print(name)
print(kvs)           #格式是一个字典格式

func('Jack', china = 'Beijing', uk = 'London')
(4)命名关键字参数
def func(a, b, *, china, uk): # *用于和普通参数做分割,*后面的参数一定要带上名字,否则报错
print(china, uk)

func(1, 2, china = 'Beijing', uk = 'London')  # 后两个参数必须传入参数名

(5)复杂情况
def func(a, b, c = 0, *args, **kvs):     #传递规则:参数超过3个的,如果带参数名就传给kvs,否则就打包给args
print(a, b, c, args, kvs)

func(1, 2)                     #对应a, b, c为默认值
func(1, 2, 3)
func(1, 2, 3, 'a', 'b')        #因为比3个多,所以满足*args,后面字母打包
func(1, 2, 3, 'a', 'b', china = 'Beijing', uk = 'London')      #后两个带参数名,要传给**kvs,而a,b要传给args
func(1, 2, 3, *('a', 'b'), **{'china':'Beijing', 'uk':'London'})

(6)递归的例子:f(n)= f(n-1)+f(n-2)
def fib(n):
if n < 1:
raise ValueError
elif (n == 1) or (n == 2):
return 1
else:
return fib(n - 1) + fib(n - 2)

print(fib(1))
print(fib(2))
print(fib(3))
print(fib(4))
print(fib(5))
print(fib(6))
(6)汉诺塔问题
def move(n, source, target, helper):
if n == 1:
print(source + ' -> ' + target)
else:
move(n - 1, source, helper, target)
print(source + ' -> ' + target)
move(n - 1, helper, target, source)

move(4, 'A', 'B', 'C')

3、Python中,函数是可以作为参数的:(1)函数可以作为参数传递
def sum(x,y,p = None):
s = x + y
if p:      #函数为真,就可以输出了
p(s)
return s

sum(100,200)
sum(100,200,print) #把print输出函数当做参数传过去
(2)
def do_sum(data,method):
return method(data)  #直接调用sum函数

print([1,2,3,4],sum)  #sum是求和的函数


阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: