一直谴责无法前进的自己才是最痛苦的
函数
1.函数参数传递
python中的函数参数传递数目可以是0个,也可以是多个,这取决于你的函数体具体实现的功能。
不过有些东西还是值得注意的。
(1)比如说对于一个求平方函数
def double(n):
s = n*n
return s
你需要在这个平方结果后再加上一些你输入的参数,但你并不清楚你想要输入的参数的具体数目,而且想要直接调用这个函数得到结果(就是说不希望在执行函数后再加上这几个参数),这时可以采用一种可变参数的方式:
def double(n, *b):
print(type(b))
s = n* n
for item in b:
s += item
return s
在函数内部加入语句可以知道这个b是元组类型。
(2)另外呢python中的参数传递除了采用位置定义之外,还可以采用名称对应
对于一个函数
def Test(n ,m):
return n//m
以下两种参数方式传递方式是等效的
Test(10, 2)
Test(m=2, n=10)
(3)还有一点值得注意,就是函数的可选参数和不可选参数,比如
def devide(n, m=1)
return n//m
n为非可选参数,在函数调用时一定要传入,m为可选参数,其不传入具体值时默认为1
且在函数调用时,可选参数一定要放在非可选参数之后
2.函数返回值
这是我认为python中最不同于C语言的地方,python的设计使得它在一个函数运行后可以返回多个值,多个值以元组的方式一起返回。
当然返回值不是必要的,一个函数也可以无返回值,这一点与C语言大体相同。
def test_return(a, b, c):
return a,b,c
print(test_return(1,2,3))
输出:(1, 2, 3)
3.lambda函数
lambda函数可以用于定义匿名函数,并将这个匿名函数赋予一个名称
值得注意的是,用lambda定义的函数,其函数功能用一行代码即可实现,如:
f = lambda x,y: x+y
print(f(1,2))
不过一般情况下更推荐使用常规的def......return......去实现,lambda一般用于一些特定的情况,题主学知不够,后续再深入这方面的讨论
绘制科赫雪花的代码
import turtle
def koch(size, n):
if(n == 0):
turtle.fd(size)
else:
for angle in [0, 60 ,-120 ,60]:
turtle.left(angle)
koch(size/3, n-1)
def main():
turtle.setup(600,600)
turtle.penup()
turtle.goto(-100, -10)
turtle.pendown()
turtle.pensize(5)
turtle.pencolor("blue")
level = 3
koch(400, level)
turtle.right(120)
koch(400,level)
turtle.right(120)
koch(400,level)
turtle.hideturtle()
main()
递归的初次使用,尽管我自己目前的能力无法写出这样一段代码