0
点赞
收藏
分享

微信扫一扫

第7章、函数

静悠 2022-02-05 阅读 83
python

目录

7.1、定义函数

7.1.1、定义一个简单的函数

  1. 函数可以将代码模块化,提高编程效率和功能完善
  2. 使用def 语句接函数名并加上圆括号定义函数
  3. 函数所包含的代码缩进在函数定义后的冒号里
  4. 如需传入参数,在括号中写上参数名,便于调用
#示例1
#代码
def printHello(name):
    print('hello, ' + name + '!')
printHello('apple.D')
#输出
hello, apple.D!

7.1.2、实参与形参

  1. 实参是调用函数时,传到函数里的参数,是一个确定变量
  2. 形参是定义函数时,需要参数传入完成功能所定义的一个不为特定值的变量
  3. 一些类型的参数从主函数传递到函数,会产生一个副本,在函数中被改变,不会影响原主函数中的值,而对于另外一些类型,比如列表,传递的是一个地址,改变地址中包含的元素,会影响主函数中列表所对应的地址所包含的元素

7.2、传递实参

7.2.1、位置实参

  1. 定义函数时,形参由一定的顺序,在调用函数时传入参数,不指定参数时会以形参顺序依次赋值
#示例2
#代码
def printHello(first_name, last_name):
    full_name = first_name + ' ' + last_name
    print('hello, ' + full_name + '!')
printHello('Shiqi', 'Liu')
#输出
hello, Shiqi Liu!

7.2.2、关键字实参

  1. 在调用参数时,可以指定形参与实参的对应,避免位置不对应而发生错误
#示例3
#代码
def printHello(first_name, last_name):
    full_name = first_name + ' ' + last_name
    print('hello, ' + full_name + '!')
printHello(last_name = 'Liu', first_name = 'Shiqi')
#输出
hello, Shiqi Liu!

7.2.3、形参的默认值

  1. 在定义函数时,对一些非必要传入的参数赋上默认值,可以简化函数调用
  2. 有默认值的参数放在后面,避免位置实参依次赋值,造成赋值错误
#示例4
#代码
def division(fir_num, sec_num = 1):
    answer = fir_num // sec_num
    print('the answer is ' + str(answer))
division(5)
#输出
the answer is 5

7.2.4、避免参数错误

  1. 位置实参顺序错误
  2. 无默认值的参数与传入参数个数不同

7.3、返回值

7.3.1、返回简单值

  1. 对于被调用函数不会改变原函数参数变量的情况,使用返回值很重要
  2. 函数中执行return 语句马上退出函数,返回一个值。
  3. 可以在函数中使用判断条件,确定返回某一个值,
  4. 使用return 语句将任一种值返回,主函数中使用变量将其接收
#示例5
#代码
def get_full_name(first_name, last_name):
    full_name = first_name + ' ' + last_name
    return full_name
f_n = get_full_name('Shiqi', 'Liu')
print('hello, ' + f_n + '!')
#输出
hello, Shiqi Liu!

7.4、传递列表

7.4.1、在函数中修改列表

  1. 将列表传入到函数中,函数中对列表进行修改,会对主函数传入的列表会被改变,因为其名称对应的是同一个列表

7.4.2、禁止修改列表

  1. 对于一个不希望被函数修改的列表,可以在调用函数时将列表副本传入
  2. 参考列表一章的方法,使用切片,会得到一个新的变量

7.5、传递任意数量的实参

7.5.1、创建一个元组

  1. 在函数定义时,不知道会接收到多少个参数可以将所有的参数聚合成一个元组,这样便可以在函数中有效访问传入的参数
  2. 元组名前面加上星号"*"

7.5.2、结合位置实参和任意数量的参数

  1. 在可以指定形参时,将形参写在前面,将任意数量的元组类型放在最后
#示例6
#代码
def print_num(*num_tuple):
    for num in num_tuple:
        print(num)
print_num(1,3,5,7,9)
#输出
1
3
5
7
9

7.5.3、使用任意数量的关键字实参

  1. 使用字典将传入参数与其相关的描述联系起来,使用关键字指定参数的方式
  2. 字典名请加上两个星号"**"
#示例7
#代码
def print_letter(**letter_dict):
    print(letter_dict)
    for key,value in letter_dict.items():
        print(key + ' : ' + value)
print_letter(a='bc',d='ef')
#输出
{'a': 'bc', 'd': 'ef'}
a : bc
d : ef

7.6、将函数保存在模块中

7.6.1、导入整个模块

  1. 可以使用import 语句将未在Python 库里的函数导入使用(这种方式类似于C语言头文件)
  2. 模块是一种文件化的方式,将函数定义在非主程序的Python 文件里,便于改进和主程序的简明

7.6.2、导入的方式

  1. 只导入模块,在使用模块中的函数时,需包含模块名
#导入模块
import [文件名/ 模块名]
#函数调用
[文件名/ 模块名].function_name()
  1. 导入特定函数,对于模块中其他函数,未导入不能使用
#导入函数
from [文件名/ 模块名] import function_name
#调用函数
function_name()
  1. 导入模块中的所有函数,在import 后写上"*"
#导入模块中所有函数
from [文件名/ 模块名] import *
  1. 使用as 关键字给模块或函数指定别名
#导入模块并指定别名(new_name )
import [文件名/ 模块名] as [new_name]
#调用其中函数
new_name.function_name()
#导入函数并指定别名(fn )
from [] import function_name as fn
#调用该函数
fn()
举报

相关推荐

0 条评论