一直谴责无法前进的自己才是最痛苦的

函数

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()

递归的初次使用,尽管我自己目前的能力无法写出这样一段代码