合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[TOC] ### 课前准确: * 在`Windows`系统里安装`python`,参考 [安装python](https://www.kancloud.cn/k12edu/k_12/785427#Windowspython_4) ***** ### 本节课参考资料 * `Teach Your Kids to Code.pdf` 第七章:函数 * `python:从入门到实践.pdf` 第八章:函数 * [W3schools:python_functions](https://www.w3schools.com/python/python_functions.asp) * [python_lambda](https://blog.csdn.net/zjuxsl/article/details/79437563) ***** ### 如何定义一个函数 无参函数: ``` def my_function(): print("你好,我是一个无参函数!") ``` 有参函数: ``` def my_function(fname): print("很高兴认识你,"+fname) my_function("JiaMing") my_function("Ben") my_function("LiMing") ``` 上面这段代码也可以改成`for`循环: ``` def my_function(fname): print("很高兴认识你,"+fname) names = ["JiaMing","Ben","LiMing"] for fname in names: my_function(fname) ``` 带默认值的有参函数: ``` def my_function(country = "挪威"): print("我来自" + country) my_function("瑞典") my_function("印度") my_function() my_function("巴西") ``` 函数可以用来计算: ``` def my_function(x): return 5 * x print(my_function(3)) print(my_function(5)) print(my_function(9)) ``` ### 一种特殊的函数:`lambda`函数 * `lambda`函数是匿名函数 * `lambda`函数有输入和输出 * `lambda`函数的功能比较简单 下面三段代码分别传入了一个、两个、三个参数、任意数量的参数: ``` x = lambda a : a + 10 print(x(5)) ``` ``` x = lambda a, b : a * b print(x(5, 6)) ``` ``` x = lambda a, b, c : a + b + c print(x(5, 6, 2)) ``` 使用` *args` 表示任意个参数 ``` y = lambda *args : sum(args) print(y(5, 6, 2)) ``` 当在另一个函数中使用`lambda`函数时,`lambda`函数的功能将得到更好的显示。假设您有一个函数定义,它接受一个参数,并且该参数将被乘以一个未知数: ``` def myfunc(n): return lambda a : a * n mydoubler = myfunc(2) print(mydoubler(11)) ``` 想一想,哪个参数是`n`,哪个是`a`? ``` def myfunc(n): return lambda a : a / n mydoubler = myfunc(0) mytripler = myfunc(10) print(mydoubler(20)) print(mytripler(20)) ``` ``` # chapter7_1.py def get_formatted_name(first_name, last_name): """返回整洁的姓名""" full_name = first_name + last_name return full_name.title() while True: print("\n你叫什么名字:") print("如果你不想告诉我,请按 'q'。") f_name = input("你的姓: ") if f_name == 'q': break l_name = input("你的名:") if l_name == 'q': break formatted_name = get_formatted_name(f_name, l_name) print("\n你好啊, " + formatted_name + "!") ``` ### 做一个练习 ``` # chapter7_2.py import random import turtle t = turtle.Pen() t.speed(0) turtle.bgcolor("black") colors = ["red", "yellow", "blue", "green", "orange", "purple", "white", "gray"] # 定义函数 random_spiral def random_spiral(): t.pencolor(random.choice(colors)) size = random.randint(10,40) x = random.randrange(-turtle.window_width()//2, turtle.window_width()//2) y = random.randrange(-turtle.window_height()//2, turtle.window_height()//2) t.penup() t.setpos(x,y) t.pendown() for m in range(size): t.forward(m*2) t.left(91) for n in range(50): random_spiral() ``` ### 课程小结 1. 有参数、无参数函数 2. `lambda`函数 3. 如何表达任意个参数