Python入门 -4-函数

  • 编写函数 (带名字的代码块 用于完成具体的工作)
  • 学习向函数传递信息的方式
    学习如何编写主要任务是显示信息的函数
    用于处理数据并返回一个或一组值的函数
  • 学习如何将函数存储在被称为模块的独立文件中 让主程序文件的组织更为有序
定义函数
def greet_user():                      //函数定义 函数名为greet_user
	"""显示简单的问候语"""              //文档字符串的注释 描述函数是做什么的
	print("hello!")                    //函数体内代码
	
greet_user()                          //函数调用

函数定义:使用关键字 def 来告诉python你要定义一个函数 指出函数名 括号内可以指出函数为完成其任务需要怎样的信息
文档字符串用三引号括起 Python使用它们来生成有关程序中函数的文档

向函数传递信息 :

调用函数时传递值

def greet_user(username):                      
	"""显示简单的问候语"""           
	print("hello!")
	
greet_user('jesse')
形参、实参

在上述实例中 变量username是一个形参——函数完成其工作所需的一项信息
值‘jesse’是一个实参 实参是调用函数时传递给函数的信息
在greet_user(‘jesse’)中 将实参’jesse’传递给了函数greet_user() 这个值被存储在形参username中

传递实参
位置实参

要求实参的顺序与形参的顺序相同
调用函数多次 在函数中 可根据需要使用任意数量的位置实参 Python 将按顺序将函数调用中的实参关联到函数定义中相应的形参
位置实参的顺序很重要

关键字实参

关键字实参是传递给函数的名称-值对
务必准确指定函数定义中的形参名

默认值

编写函数时 可给每个形参指定默认值 在调用函数中给形参提供了实参时 Python将使用指定的实参值 否则将使用形参的默认值

使用默认值时 在形参列表中必须先列出没有默认值的形参 再列出有默认值的形参 这让Python依然能够正确地解读位置实参
可以混合使用各种调用方式

避免实参错误

提供的实参多于或少于需要的信息时 会出现实参不匹配的错误

返回值

函数返回的值称为返回值
在函数中 可使用return语句将值返回到调用函数的代码行
返回值可以将程序的大部分繁重工作移到函数中完成 从而简化主程序

让实参变成可选的

有时候 需要让实参变成可选的 这样使用函数的人就只需在必要时才提供额外的信息 可以使用默认值让实参变成可选的

返回字典

函数可返回任何类型的值 包括列表和字典等较复杂的数据结构
返回字典 可以轻松扩展这个函数 使其接受可选值

结合使用函数和while循环

可以将函数和前面介绍的任何Python结构结合起来使用

传递列表

有时候 向函数传递列表很有用 这种列表包含的可能是名字 数字或更复杂的对象(如字典) 将列表传递给函数后 函数就能直接访问其内容 使用函数可以提高处理列表的效率

在函数中修改列表

在函数中对列表所做的任何修改都是永久的 这样可以高效地处理大量的数据
可以编写多个函数 是每个都做意见具体的工作

禁止函数修改列表

有时候 需要禁止函数修改列表
可以向函数传递列表的副本而不是原件 这样函数所做的任何修改都只影响副本 而丝毫不影响原件

要将列表的副本传递给函数 可以:
function_name(list_name[:])
切片表示法[:] 创建列表的副本

虽然向函数传递列表的副本可保留原始列表的内容 但除非有充分的理由需要传递副本 否则还是应该将原始列表传递给函数 因为让函数使用现成列表可避免花时间和内存创建副本 从而提高效率 在处理大型列表时尤其如此

可以传递任意数量的实参
def make_pizza(*toppings):                 //创建一个名为toppings的空元组
	"""打印顾客点的所有配料"""
	print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
结合使用位置实参和任意数量实参

如果要让函数接受不同类型的实参 必须在函数定义中将接纳任意数量实参的形参放在最后

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

有时候 需要接受任意数量的实参 但预先不知道传递给函数的会是什么样的信息 在这种情况下 可以将函数编写成能够接受任意数量的键-值对——调用语句提供了多少就接受多少

def build_profile(first, last, **user_info)  
	......

形参**user_info 中的两个星号让Python创建一个名为user_info的空字典 并将收到的所有键-值对都封装到这个字典中

将函数存储在模块中

将函数存储在被称为模块的独立文件中 在将模块导入到主程序中 import 语句允许在当前运行的程序文件中使用模块中的代码

导入整个模块

首先创建模块 模块是扩展名为.py的文件
然后将这个文件导入到另一文件中

import 模块名(文件名)
导入特定的函数
导入模块中的特定函数
from module_name import function_name
用逗号分隔函数名 根据需要从模块中导入任意数量的函数
from module_name import function_0, function_1, function_2
使用as给函数指定别名
from pizza import make_pizza as mp
使用 as 给模块指定别名
import pizza as p
导入模块中的所有函数
使用星号(*)运算符可让Python导入模块中的所有函数
from module_name import *
最好不要使用 可以将整个模块导入
函数编写指南

应该给函数指定描述性名称 且只在其中使用小写字母和下划线
每个函数都应包含简要地阐述其功能的注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值