第8章 函数

news2024/11/16 11:31:48

第8章 函数

  • 8.1 定义函数
    • 8.1.1 向函数传递信息
    • 8.1.2 实参和形参
  • 8.2 传递实参
    • 8.2.1 位置实参
    • 8.2.2 关键字实参
    • 8.2.3 默认值
  • 8.3 返回值
    • 8.3.1 返回简单值
    • 8.3.2 让实参变成可选的
    • 8.3.3 返回字典
    • 8.3.4 结合使用函数和 while 循环
  • 8.4 传递列表
    • 8.4.1 在函数中修改列表
    • 8.4.2 禁止函数修改列表
  • 8.5 传递任意数量的实参
    • 8.5.1 结合使用位置实参和任意数量实参
    • 8.5.2 使用任意数量的关键字实参
  • 8.6 将函数存储在模块中
    • 8.6.2 导入特定的函数
    • 8.6.3 使用 as 给函数指定别名
    • 8.6.4 使用 as 给模块指定别名
    • 8.6.5 导入模块中的所有函数
  • 8.7 函数编写指南

在这里插入图片描述

8.1 定义函数

一个简单的例子

def greet_user():  # 定义函数
    print('Hello')  

greet_user()  # 调用函数

8.1.1 向函数传递信息

可在函数定义 def greet_user()的括号内添加 username。

def greet_user(username):  # 定义函数
    print(f'Hello,{username}')

greet_user('python')  # 调用函数

在这里插入图片描述

8.1.2 实参和形参

形参(parameter),即函数完成工作所需的信息。
实参(argument),即调用函数时传递给函数的信息。
在上述例子中,变量username是一个形参。在代码greet_user(‘python’)中’python’是一个实参。

8.2 传递实参

8.2.1 位置实参

  1. 多次调用函数
  2. 位置实参的顺序很重要
def describe_pet(pet,name):  # 定义函数
    print(f"My {pet}'s name is {name}")

describe_pet('dog', 'haha')  # 调用函数
# My dog's name is haha

8.2.2 关键字实参

关键字实参是传递给函数的名称值对。

def describe_pet(pet,name):  # 定义函数
    print(f"My {pet}'s name is {name}")

describe_pet(name = 'haha',pet = 'dog')  # 调用函数
# My dog's name is haha

8.2.3 默认值

给形参指定默认值后,可在函数调用中省略相应的实参。

def describe_pet(pet, name='xixi'):  # 定义函数
    print(f"My {pet}'s name is {name}")

describe_pet(pet = 'dog')  # 调用函数
# My dog's name is xixi

8.3 返回值

8.3.1 返回简单值

调用返回值的函数时,需要提供一个变量,以便将返回的值赋给它。

def get_name(first_name, last_name):  # 定义函数
    name = f'{first_name} {last_name}'
    return name

he = get_name('Li', 'Hua')
print(he)

8.3.2 让实参变成可选的

可使用默认值来让实参变成可选的。

8.3.3 返回字典

函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。

def get_name(first_name, last_name):  # 定义函数
    name = {'first': first_name, 'last':last_name}
    return name


he = get_name('Li', 'Hua')
print(he)

在这里插入图片描述

8.3.4 结合使用函数和 while 循环

可将函数同本书前面介绍的任何 Python 结构结合起来使用。

def fn(num):  # 定义函数
    print(num * 2)

i = 1
while i <=3 :
    print(i)
    fn(i)
    i = i + 1

8.4 传递列表

8.4.1 在函数中修改列表

将列表传递给函数后,函数就可对其进行永久性的修改。

def fn(ss):
    while 'C' in ss:
        ss.remove('C')
    return ss

str1 = ['A', 'B', 'C', 'D', 'C', 'C']
str2 = fn(str1)
print(str1)  # ['A', 'B', 'D']
print(str2)  # ['A', 'B', 'D']

8.4.2 禁止函数修改列表

向函数传递列表的副本,这样函数所做的修改都不受影响原件。
切片表示法[:] 创建列表的副本。

def fn(ss):
    while 'C' in ss:
        ss.remove('C')
    return ss

str1 = ['A', 'B', 'C', 'D', 'C', 'C']
str2 = fn(str1[:])  # 传入副本
print(str1)  # ['A', 'B', 'C', 'D', 'C', 'C']
print(str2)  # ['A', 'B', 'D']

8.5 传递任意数量的实参

8.5.1 结合使用位置实参和任意数量实参

在函数定义中将接纳任意数量实参的形参放在最后。

def fn(ss, *args):

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

将函数编写成能够接受任意数量的键值对——调用语句提供了多少就接受多少。

8.6 将函数存储在模块中

在这里插入代码片## 8.6.1 导入整个模块
要让代码是可导入的,得先创建模块。模块是扩展名为.py 的文件,包含要导入到程序中的代码。
下面来创建一个包含函数make_pizza()的模块。为此,将文件pizza.py中除函数make_pizza()之外的其他代码全部删掉。

# pizza.py
def make_pizza(size, *toppings):
    print(size)
    for topp in toppings:
        print(topp)

接下来,在pizza.py所在的目录中创建一个名为making_pizzas.py的文件。这个文件导入刚创建的模块,再调用make_pizza()。

import pizza
pizza.make_pizza(16, 'A')
pizza.make_pizza(12, 'A', 'B', 'C')

8.6.2 导入特定的函数

还可以导入模块中的特定函数,这种导入方法的语法如下:

from module_name import function_name

例如

from pizza import make_pizza

通过用逗号分隔函数名,可根据需要从模块中导入任意数量的函数。

8.6.3 使用 as 给函数指定别名

要给函数取这种特殊外号,需要在导入它时指定。

from pizza import make_pizza as mp

8.6.4 使用 as 给模块指定别名

通过给模块指定简短的别名,能够更轻松地调用模块中的函数。

import pizza as pi

8.6.5 导入模块中的所有函数

使用星号(*)运算符可让 Python 导入模块中的所有函数。

from pizza import *

8.7 函数编写指南

给形参指定默认值时,等号两边不要有空格。
对于函数调用中的关键字实参,也应遵循这种约定。
PEP 8 建议代码行的长度不要超过 79 字符。
大多数编辑器会自动对齐后续参数列表行,使其缩进程度与你给第一个参数列表行指定的缩
进程度相同。
如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开。
所有 import 语句都应放在文件开头。唯一例外的情形是,在文件开头使用了注释来描述整个程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1812720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue操作蓝牙教程

项目背景 想在VUE中使用蓝牙功能&#xff0c;百度了好久也尝试了好多都没法实现。 概念讲价 如果要在浏览器中使用蓝牙&#xff0c;去搜索关键字【navigator.bluetooth】&#xff0c;搜索后发现这根本不是想要的结果。 解决方法 去搜索关键字【uniappbluetoothvue】&#x…

mouceMice智能垃圾分类系统

mouceMice智能垃圾分类系统 1.成员名称和任务分配 成员认领任务陈曦实现登录、注册、检索垃圾类型和前端部分实现、连接树莓派实现socket通信传输图片杨雨佳需求分析和总体进展监督郑博文部分前端页面实现及其优化李睿初步实现深度学习算法、树莓派连接和算法效率提升范兴宇项…

【AI法官】人工智能判官在线判案?

概述 AI法官是一款为用户提供专业法律分析和判决建议的智能体应用。用户只需简要描述案情&#xff0c;AI法官便会利用其强大的法律知识和逻辑推理能力&#xff0c;快速且准确地梳理出判决结果。该应用的目标是为用户提供高效、准确、合法的判决建议。 角色任务 任务描述 作为…

【CS.SE】2024年,你应该选择计算机专业吗?详细分析与未来展望

文章目录 1. 引言1.1 背景介绍 2. 计算机相关专业的现状与挑战2. 计算机相关专业的现状与挑战2.1 行业内的就业趋势2.1.1 现有就业数据2.1.2 行业需求变化 2.2 市场饱和度与竞争2.2.1 毕业生数量增长2.2.2 薪资与职业发展 2.3 技术创新与行业发展2.3.1 新兴技术的发展2.3.2 全球…

TinyHttpd源码精读(三)

在上一章中我们一起看了如何实现静态的网页&#xff0c;在这里我们一起看Tinyhttpd最后的一部分&#xff0c;动态网页的实现&#xff1a;在这里首先声明下因为cgi脚本的支持问题&#xff0c;所以我会新建一个简单的cgi脚本然后将路径导向到这个脚本&#xff1a; 0.perl的配置&…

2024年建筑、水利交通与工程管理国际学术会议(ICAWRTEM 2024)

全称&#xff1a;2024年建筑、水利交通与工程管理国际学术会议&#xff08;ICAWRTEM 2024&#xff09; 会议网址:http://www.icawrtem.com会议地点: 广州投稿邮箱&#xff1a;icawrtemsub-conf.com 投稿标题&#xff1a;ICAWRTEM 2024ArticleTEL。投稿时请在邮件正文备注&#…

MySQL之高级特性(一)

高级特性 外键约束 InnoDB是目前MySQL中唯一支持外键的内置存储引擎&#xff0c;所以如果需要外键支持那选择就不多了。使用外键是有成本的。比如外键通常都要求每次在修改数据时都要在另一张表中多执行一次查找操作。虽然InnoDB强制外键使用索引&#xff0c;但还是无法消除这…

一夜之间,苹果杀死无数AI工具创业公司!GPT-4o深度整合进苹果

就在刚刚&#xff0c;苹果发布会WWDC2024官宣了一系列AI相关的重磅升级。 由于这一波AI升级攒的太大了&#xff0c;苹果甚至索性创造了一个新的概念——苹果智能&#xff08;Apple Intelligence&#xff09;。 如果你认为 苹果智能 Siri升级&#xff0c;那你就大错特错了。 …

分层解耦

三层架构 controller:控制层&#xff0c;接收前端发送的请求&#xff0c;对请求进行处理&#xff0c;并响应数据&#xff0c; service:业务逻辑层&#xff0c;处理具体的业务逻辑。 dao:数据访问层(Data Access Object)(持久层)&#xff0c;负责数据访问操作&#xff0c;包括数…

动态规划(多重背包问题+二进制优化)

引言 多重背包&#xff0c;相对于01背包来说&#xff0c;多重背包是每个物品会有相应的个数&#xff0c;最多可以选那么多个&#xff0c;因而对于朴素多重背包&#xff0c;需要在01背包的基础上&#xff0c;再加一层物品的循环 朴素多重背包例题 P2347 [NOIP1996 提高组] 砝…

【Affine / Perspective Transformation】

文章目录 仿射变换介绍仿射变换 python 实现——cv2.warpAffine透视变换透视变换 python 实现——cv2.warpPerspective牛刀小试各类变换的区别与联系仿射变换和单应性矩阵透视变换和单应性矩阵 仿射变换介绍 仿射变换&#xff08;Affine Transformation&#xff09;&#xff0…

【话题】评价GPT-4o:从革命性技术到未来挑战

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 引言技术原理应用领域实际案例优势挑战局限性未来展望文章推荐 引言 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术的进步一直是推动技术革…

odoo15升级odoo16遇到的问题及解决过程

odoo15升级odoo16遇到的问题 PyMuPDF 档案管理整理时,从15升级16出现如下错误: File "f:\od162306\dms\dmssp\models\shenqb.py", line 136, in doc_fj_pdf doc.SaveAs(ftem, FileFormat=17) # input_file.replace(".docx", ".pdf") F…

鸿蒙开发文件管理:【@ohos.environment (目录环境能力)】

目录环境能力 该模块提供环境目录能力&#xff0c;获取内存存储根目录、公共文件根目录的JS接口。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。本模块接口为系统接口&#xff0c;三方应用不支…

Pythone 程序打包成 exe

1.安装pyinstaller # 安装 pip install pyinstaller # 查看版本 pyinstaller -v2.更新pyinstaller 版本 # 更新 pip install --upgrade pyinstaller # 查看版本 pyinstaller -v3.切换到 py文件所在目录 #切换到.py所在的目录 E: cd cd E:\x-svn_x-local\04PythoneProjects\A…

滴滴出行 大数据研发实习生【继任】

大数据研发实习生JD 职位描述 1、负责滴滴核心业务的数据建设&#xff0c;设计并打造适应滴滴一站式出行平台业务特点的数仓体系。 2、负责抽象核心业务流程&#xff0c;沉淀业务通用分析框架&#xff0c;开发数仓中间层和数据应用产品。 3、负责不断完善数据治理体系&#xff…

远程链接服务 ssh

① 指定用户身份登录 ssh root10.36.105.100 ssh jim10.36.105.100 ② 不登陆远程执行命令 ssh root10.36.105.100 ls /opt ③ 远程拷贝 scp -r // 拷贝目录 -p // 指定端口 将本地文件拷贝给远程主机 scp -r /opt/test1 10.36.105.100:/tmp/// 将本…

使用 ML.NET CLI 自动进行模型训练

ML.NET CLI 可为 .NET 开发人员自动生成模型。 若要单独使用 ML.NET API(不使用 ML.NET AutoML CLI),需要选择训练程序(针对特定任务的机器学习算法的实现),以及要应用到数据的数据转换集(特征工程)。 每个数据集的最佳管道各不相同,从所有选择中选择最佳算法增加了复…

轻兔推荐 —— NeatDownloadManager

via&#xff1a;轻兔推荐 - https://app.lighttools.net/ 简介 NeatDownloadManager简称NDM&#xff0c;跟IDM同样出名的网络下载器&#xff0c;安装对应的浏览器器扩展后&#xff0c;可接管浏览器下载 - 软件体积非常小&#xff0c;Windows版900KB&#xff0c;很难想象当今的…

UE5 渲染性能优化 学习笔记

主要考虑三个点&#xff1a; 1、灯光 2、半透明物体 3、后处理 1、Game&#xff1a;CPU对游戏代码的处理工作 2、Draw&#xff1a;CPU为GPU准备数据所做的工作 3、GPU Time&#xff1a;就是GPU所渲染需要花的时间 UE5的命令行指令 里面说明了某个指令有什么用处 以及启动…