python笔记 函数

一、定义函数

以问候语为例的简单函数:

>>> def greet_user(username):
...     """显示简单的问候语"""
...     print(f"Hello,{username.title()}!")
...
>>> greet_user("Blake")
Hello,Blake!
  • 1.关键字def告诉python你要定义一个函数
  • 2 greet_user为函数名
  • 3.在函数定义的时候括号里面的为形参
  • 4.所有缩进行为函数体
  • 5.三引号里面的为文档字符串,注释此函数的作用
  • 6.greet_user(“Blake”)为函数调用,括号里面为实参

二、传递实参

形参、实参可以是多个。而向函数传递实参的方式有很多:可以使用位置实参,这要求实参的顺序和形参的顺序相同。也可以使用关键字实参,其中每个实参都由变量名和值组成。还可以使用列表和字典


(1)位置实参
(2)关键字实参

关键字实参传递给函数的是名称值对,即直接在实参中将名称和值关联起来。相对于位置实参,在形参较多的情况下,使用关键字实参不容易混淆。
例:

>>> def describe_pet(animal_type,pet_name):
...     print(f"i have a {animal_type}")
...     print(f"\nits name is {pet_name}")
...
>>> describe_pet(animal_type="cat",pet_name="blake")
i have a cat

its name is blake
(3)默认值

编写函数的时候可以给每个函数指定默认值,这样在函数调用的时候可以省略相应的实参。
关键字实参是给实参赋值。而函数指定默认值的方法,实际上就是在函数定义的时候,直接给形参赋值。
注:在使用默认值的时候,必须先在形参列表中列出没有默认值的形参,再列出有默认值的实参,这让python依然能够正确的解读位置实参。

三、返回值

函数并非总是直接显示输出,它还可以处理一些数据,返回一个或者一组值。在函数中,可以使用return语句将值返回到调用函数的代码行。

让实参变成可选的

方法是将形参默认值设为空,并且放在形参列表的末尾

返回字典

函数可以返回任意类型的值,包括列表、字典等较为复杂的数据结构

>>> def build_person(first_name,last_name):
...     """返回一个字典,包含一个人的完整姓名"""
...     person={"first":first_name,"last":last_name}
...     return person
...
>>> NBAplayer=build_person("Blake","Griffin")
>>> print(NBAplayer)
{'first': 'Blake', 'last': 'Griffin'}

四、传递列表

你会发现,向函数传递列表很有用。将列表传递给函数之后,函数就能直接访问它的内容

在函数中修改列表

将列表传递给函数之后,函数就可以对列表进行修改,对其所作出的任何修改都是永久性的。

禁止函数修改列表

方法是向函数传递副本而非原件。
function_name(list_name[:])

五、传递任意数量的实参

有时候,预先不知道函数 需要接受多少个实参。好在python允许函数从调用语句中收集任意数量的实参。例如,制作汉堡的函数。无法确定顾客需要多少种配料。

>>> def make_humbuger(*toppings):
...     """打印顾客点的所有配料"""
...     print(toppings)
...
>>> make_humbuger("bacon","cheese")
('bacon', 'cheese')
  • *toppings让python创建了一个名为toppings的空元组,并将所有收到的值都放到这个空元组当中。
结合使用位置实参和任意数量实参

如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。python先匹配位置实参和关键字实参,再将余下的实参都集中收集到最后那一个形参当中。
注:你经常会看见形参名*args,它也收集任意数量的位置实参。

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

**用来创建一个空字典,用来接收任意数量的关键字实参
注:你经常会看见形参名*kwargs,它用于收集任意数量的关键字实参

六、将函数存在模块中

使用函数的一大优点是可以将代码块和主程序分离。你还可以更进一步,将函数存储在称为模块的独立文件当中,再将模块导入主程序中。这样可以隐藏程序代码的细节,将重点放在程序的高层逻辑上。

  • 模块是扩展名为.py的文件
  • 导入方法:import 模块名
  • 使用函数方法:模块名.函数名
  • 导入特点函数方法:from module_name import function_name
  • 导入模块的所有函数:from module_name import *
使用as给函数或模块指定别名

(1)给函数指定别名
from pizza import make_pizza as mp
(2)给模块指定别名
import pizza as p

七、函数编写指南

  • 应给函数指定描述性名称,且只在其中使用小写字母和下划线
  • 给形参指定默认值的时候,等号两边不要有空格
  • 对于函数调用中的关键字实参也应遵守这一规定
  • 如果形参过多,导致函数定义超过了79字符,可在函数定义中输入左括号后按回车键,并在下一行按两次Tab,从而将形参列表和只缩进一行的函数体分隔开。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

⁡⁢⁡布莱克先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值