知识点:
(1)函数(function):可接受输入、执行指令、返回输出的复合语句。调用函数,意味着提供输入。每一个输入就是一个参数,为函数提供参数称之为“传参”。
(2) 调用函数的语句:函数名(逗号分隔的参数);f (x) = x+2 语句左侧定义一个函数 f ,接受一个参数 x;右侧是函数具体定义,利用(x)中传递的参数进行计算并返回输 出。
(3)在python中创建一个函数,需要选择函数名,并定义其参数、行为和返回值。def定义函数,return指定返回值。函数可以接受一个或多个参数,也可以不接受参数,括号 内置为空就行。
1 def 函数名(参数): 2 函数定义 3 4 def f(x): 5 return x+2
(4)必选参数与可选参数。定义可选参数:函数名(参数名=参数值)
1 #既有必选参数x,又有可选参数y 2 def f(x,y=2): 3 return x+y 4 print(f(5))
(4)作用域:变量的一个重要属性,指的是哪部分的程序可对变量进行读写。读意味着获取该变量的值,写意味着可以修改变量的值。变量的作用域由其在程序中所处的位置来 决定。在函数以外定义一个变量,则该变量拥有全局作用域,在本程序任何地方可对其读写;在函数内部定义一个变量,则该变量只有局部作用域,只能在该函数内部进行 读写。
(5)在局部作用域对全局变量进行改写,需要使用关键字 global 来调用全局变量。
1 x = 100 2 def f(): 3 global x #调用全局变量x 4 x = x+1 5 print(x) 6 f()
(6)异常处理;使用 try 和 except 关键字。try从句包含可能会发生的错误,except从句包含仅在错误发生时执行的代码。
a = input("type a number:") b = input("type another number:") a = int(a) b = int(b) try: print(a / b) except ZeroDivisionError: print("b cannot be zero.")
课后习题:
1、编写一个函数,接受数字作为输入,并返回该数字的平方。
def f(x): return x**2 try: x = input("type a number:") x = float(x) except ValueError: print("无效输入") print(f(x))
2、编写一个以字符串为参数并将其打印的函数。
def f(x): return x x = input("type a string:") x = str(x) print(f(x))
3、编写一个接受3个必选参数,两个可选参数的函数。
def f(x,y,z,m=10,n=10): return x+y+z+m+n x = input("type a number:") x = float(x) y = input("type another number:") y = float(y) z = input("type a number again:") z = float(z) print(f(x,y,z))
4、编写一个带两个函数的程序。第一个函数接受一个整数为参数,并返回该整数除以2的值。第二个函数应接受一个整数作为参数,并返回该整数乘以4的值。调用第一个函数,将结 果保存值变量,并将变量作为参数传递给第二个函数。
def f(x): return x/2 x = input("type a number:") x = int(x) print(f(x)) y = f(x)
y = int(y) def g( ): global y return y*4 print (g())
5、可变参数:输入的一个或多个参数自动组装成元组。计算:a*b*c*d.....
def f(*number):#*nums
表示把nums
这个元组的所有元素作为可变参数传进去 product = 1 for n in number: product = product*n return product print(f(1,2,3,4))
6、关键字参数。
"""关键字参数允许传入0个或任意参数,这些关键字参数自动组装成一个dict. 可以用于扩展函数功能。例如正在做一个用户注册功能,除了用户名和年龄必填 外,其余可选项。""" def person(name, age, **kw): print('name:',name, 'age:', age, 'other:',kw) person('jack',15,city='bejing',job='teacher') """可以先组装一个字典,然后作为参数传入""" extra = {"city":"shanghai","job":"engineer"} person("jack",20,**extra)