Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于“Python”的核心知识点整理大全15

关于“Python”的核心知识点整理大全15

作者头像
用户10920956
发布于 2024-01-19 00:32:47
发布于 2024-01-19 00:32:47
17903
代码可运行
举报
文章被收录于专栏:lzylzy
运行总次数:3
代码可运行
7.3.2 删除包含特定值的所有列表元素

在第3章中,我们使用函数remove()来删除列表中的特定值,这之所以可行,是因为要删除 的值在列表中只出现了一次。如果要删除列表中所有包含特定值的元素,该怎么办呢? 假设你有一个宠物列表,其中包含多个值为'cat'的元素。要删除所有这些元素,可不断运 行一个while循环,直到列表中不再包含值'cat',如下所示: pets.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
while 'cat' in pets:
 pets.remove('cat')
print(pets)

我们首先创建了一个列表,其中包含多个值为'cat'的元素。打印这个列表后,Python进入 while循环,因为它发现'cat'在列表中至少出现了一次。进入这个循环后,Python删除第一个'cat' 并返回到while代码行,然后发现'cat'还包含在列表中,因此再次进入循环。它不断删除'cat', 直到这个值不再包含在列表中,然后退出循环并再次打印列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
['dog', 'dog', 'goldfish', 'rabbit'] 
7.3.3 使用用户输入来填充字典

可使用while循环提示用户输入任意数量的信息。下面来创建一个调查程序,其中的循环每 次执行时都提示输入被调查者的名字和回答。我们将收集的数据存储在一个字典中,以便将回答 同被调查者关联起来: mountain_poll.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
responses = {}
# 设置一个标志,指出调查是否继续
polling_active = True
while polling_active:
 # 提示输入被调查者的名字和回答
1 name = input("\nWhat is your name? ")
response = input("Which mountain would you like to climb someday? ")
 # 将答卷存储在字典中
2 responses[name] = response
 # 看看是否还有人要参与调查
3 repeat = input("Would you like to let another person respond? (yes/ no) ")
 if repeat == 'no':
 polling_active = False
# 调查结束,显示结果
print("\n--- Poll Results ---")
4 for name, response in responses.items():
 print(name + " would like to climb " + response + ".")

这个程序首先定义了一个空字典(responses),并设置了一个标志(polling_active),用于 指出调查是否继续。只要polling_active为True,Python就运行while循环中的代码。 在这个循环中,提示用户输入其用户名及其喜欢爬哪座山(见1)。将这些信息存储在字典 responses中(见2),然后询问用户调查是否继续(见3)。如果用户输入yes,程序将再次进入 while循环;如果用户输入no,标志polling_active将被设置为False,而while循环将就此结束。 最后一个代码块(见4)显示调查结果。 如果你运行这个程序,并输入一些名字和回答,输出将类似于下面这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
What is your name? Eric
Which mountain would you like to climb someday? Denali
Would you like to let another person respond? (yes/ no) yes
What is your name? Lynn
Which mountain would you like to climb someday? Devil's Thumb
Would you like to let another person respond? (yes/ no) no
--- Poll Results ---
Lynn would like to climb Devil's Thumb.
Eric would like to climb Denali. 

7.4 小结

在本章中,你学习了:如何在程序中使用input()来让用户提供信息;如何处理文本和数字 输入,以及如何使用while循环让程序按用户的要求不断地运行;多种控制while循环流程的方式: 设置活动标志、使用break语句以及使用continue语句;如何使用while循环在列表之间移动元素, 以及如何从列表中删除所有包含特定值的元素;如何结合使用while循环和字典。 在第8章中,你将学习函数。函数让你能够将程序分成多个很小的部分,其中每部分都负责 完成一项具体任务。你可以根据需要调用同一个函数任意次,还可将函数存储在独立的文件中。 使用函数可让你编写的代码效率更高,更容易维护和排除故障,还可在众多不同的程序中重用。



第8章

函 数

8.1 定义函数

下面是一个打印问候语的简单函数,名为greet_user(): greeter.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 def greet_user():
2 """显示简单的问候语"""
3 print("Hello!")
4 greet_user()

这个示例演示了最简单的函数结构。1处的代码行使用关键字def来告诉Python你要定义一个 函数。这是函数定义,向Python指出了函数名,还可能在括号内指出函数为完成其任务需要什么 样的信息。在这里,函数名为greet_user(),它不需要任何信息就能完成其工作,因此括号是空 的(即便如此,括号也必不可少)。最后,定义以冒号结尾。 紧跟在def greet_user():后面的所有缩进行构成了函数体。2处的文本是被称为文档字符串 (docstring)的注释,描述了函数是做什么的。文档字符串用三引号括起,Python使用它们来生成有关程序中函数的文档。 代码行print("Hello!")(见3)是函数体内的唯一一行代码,greet_user()只做一项工作: 打印Hello!。 要使用这个函数,可调用它。函数调用让Python执行函数的代码。要调用函数,可依次指定 函数名以及用括号括起的必要信息,如4处所示。由于这个函数不需要任何信息,因此调用它时 只需输入greet_user()即可。和预期的一样,它打印Hello!:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Hello! 
8.1.1 向函数传递信息

只需稍作修改,就可以让函数greet_user()不仅向用户显示Hello!,还将用户的名字用作抬 头。为此,可在函数定义def greet_user()的括号内添加username。通过在这里添加username, 就可让函数接受你给username指定的任何值。现在,这个函数要求你调用它时给username指定一 个值。调用greet_user()时,可将一个名字传递给它,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def greet_user(username):
"""显示简单的问候语"""
 print("Hello, " + username.title() + "!")
greet_user('jesse') 

代码greet_user('jesse')调用函数greet_user(),并向它提供执行print语句所需的信息。这 个函数接受你传递给它的名字,并向这个人发出问候:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Hello, Jesse! 

同样,greet_user('sarah')调用函数greet_user()并向它传递'sarah',打印Hello, Sarah!。 你可以根据需要调用函数greet_user()任意次,调用时无论传入什么样的名字,都会生成相应的 输出。

8.1.2 实参和形参

前面定义函数greet_user()时,要求给变量username指定一个值。调用这个函数并提供这种 信息(人名)时,它将打印相应的问候语。 在函数greet_user()的定义中,变量username是一个形参——函数完成其工作所需的一项信 息。在代码greet_user('jesse')中,值'jesse'是一个实参。实参是调用函数时传递给函数的信 息。我们调用函数时,将要让函数使用的信息放在括号内。在greet_user('jesse')中,将实参 'jesse'传递给了函数greet_user(),这个值被存储在形参username中。


注意 大家有时候会形参、实参不分,因此如果你看到有人将函数定义中的变量称为实参或将 函数调用中的变量称为形参,不要大惊小怪。


8.2 传递实参

鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参 的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其 中每个实参都由变量名和值组成;还可使用列表和字典。下面来依次介绍这些方式。

8.2.1 位置实参

你调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此, 最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。 为明白其中的工作原理,来看一个显示宠物信息的函数。这个函数指出一个宠物属于哪种动 物以及它叫什么名字,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 def describe_pet(animal_type, pet_name):
 """显示宠物的信息"""
 print("\nI have a " + animal_type + ".")
 print("My " + animal_type + "'s name is " + pet_name.title() + ".")
2 describe_pet('hamster', 'harry')

这个函数的定义表明,它需要一种动物类型和一个名字(见1)。调用describe_pet()时,需 要按顺序提供一种动物类型和一个名字。例如,在前面的函数调用中,实参'hamster'存储在形 参animal_type中,而实参'harry'存储在形参pet_name中(见2)。在函数体内,使用了这两个形 参来显示宠物的信息。 输出描述了一只名为Harry的仓鼠

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
I have a hamster.
My hamster's name is Harry.

1. 调用函数多次 你可以根据需要调用函数任意次。要再描述一个宠物,只需再次调用describe_pet()即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def describe_pet(animal_type, pet_name):
 """显示宠物的信息"""
 print("\nI have a " + animal_type + ".")
 print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet('hamster', 'harry')

第二次调用describe_pet()函数时,我们向它传递了实参'dog'和'willie'。与第一次调用时 一样,Python将实参'dog'关联到形参animal_type,并将实参'willie'关联到形参pet_name。与前 面一样,这个函数完成其任务,但打印的是一条名为Willie的小狗的信息。至此,我们有一只名 为Harry的仓鼠,还有一条名为Willie的小狗:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
I have a hamster.
My hamster's name is Harry.
I have a dog.
My dog's name is Willie.

调用函数多次是一种效率极高的工作方式。我们只需在函数中编写描述宠物的代码一次,然 后每当需要描述新宠物时,都可调用这个函数,并向它提供新宠物的信息。即便描述宠物的代码 增加到了10行,你依然只需使用一行调用函数的代码,就可描述一个新宠物。 在函数中,可根据需要使用任意数量的位置实参,Python将按顺序将函数调用中的实参关联 到函数定义中相应的形参。

2. 位置实参的顺序很重要

使用位置实参来调用函数时,如果实参的顺序不正确,结果可能出乎意料:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def describe_pet(animal_type, pet_name):
 """显示宠物的信息"""
 print("\nI have a " + animal_type + ".")
 print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet('harry', 'hamster') 

在这个函数调用中,我们先指定名字,再指定动物类型。由于实参'harry'在前,这个值将 存储到形参animal_type中;同理,'hamster'将存储到形参pet_name中。结果是我们得到了一个 名为Hamster的harry:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
I have a harry.
My harry's name is Hamster. 

如果结果像上面一样搞笑,请确认函数调用中实参的顺序与函数定义中形参的顺序一致。

8.2.2 关键字实参

关键字实参是传递给函数的名称—值对。你直接在实参中将名称和值关联起来了,因此向函 数传递实参时不会混淆(不会得到名为Hamster的harry这样的结果)。关键字实参让你无需考虑函 数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。 下面来重新编写pets.py,在其中使用关键字实参来调用describe_pet():

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def describe_pet(animal_type, pet_name):
 """显示宠物的信息"""
 print("\nI have a " + animal_type + ".")
 print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(animal_type='hamster', pet_name='harry')

函数describe_pet()还是原来那样,但调用这个函数时,我们向Python明确地指出了各个实 参对应的形参。看到这个函数调用时,Python知道应该将实参'hamster'和'harry'分别存储在形 参animal_type和pet_name中。输出正确无误,它指出我们有一只名为Harry的仓鼠。 关键字实参的顺序无关紧要,因为Python知道各个值该存储到哪个形参中。下面两个函数调 用是等效的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='harry', animal_type='hamster')

注意 使用关键字实参时,务必准确地指定函数定义中的形参名。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python:核心知识点整理大全16-笔记
注意 使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参。 这让Python依然能够正确地解读位置实参。
用户10920956
2024/01/19
1240
Python:核心知识点整理大全16-笔记
Python 函数知识大全
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
Python知识大全
2020/02/13
9350
Python函数(一)
下面是一个打印问候语的简单函数,名为 greet_user() :
Francek Chen
2025/01/22
710
Python函数(一)
python函数基础
函数中的username为形参,用来让函数完成工作所需要的一些信息,greet_user('devilf')中的devilf为实参,实参是调用函数时传递给函数的信息。大体的过程是这样的:我们将devilf这个人名(实参)传递给了函数greet_user(),这个人名也就是这个实参存储在username中,然后进入函数体开始工作。
dogfei
2020/07/31
3300
Python基础学习-函数
一:定义函数: ① 函数是带名字的代码块,用于完成具体的工作。 ② 函数使用关键字def来定义,最后,定义以冒号结尾。 ③ 每个函数后面都应紧跟一个文档字符串,来描述函数是做什么的, 文档字符
爱吃西瓜的番茄酱
2018/04/03
7490
Python基础学习-函数
函数
函数是带名字的代码块,用于完成具体的工作。通过使用函数,程序的编写、阅读、测试和修复都将更容易。
狼啸风云
2019/01/18
7610
入门必备!面向对象编程之Python函数与类
Python支持大多数面向对象编程技术。在Python中所有东西都是对象,包括类、函数、数和模块。它允许多态性,不只是在类层级之内而且通过采用鸭子类型的方式。任何对象可以用于任何类型,只要它有适当的方法和特性就能工作。
数据STUDIO
2021/06/24
7770
python函数
python函数 本文目录 1 调用函数 2 定义函数 3 形式参数与实际参数 4 四种参数 4.1 位置参数 4.2 关键字参数 4.3 默认参数 4.4 不定长参数 5 不可变类型与可变类型的参数
mwangblog
2018/07/04
9720
【说站】Python默认值的使用注意
以上就是Python默认值的使用注意,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/23
7480
Python函数初识
​ 计算机语言中的函数是类比于数学中的函数演变来的,但是又有所不同。前面的知识中我们学会了运用基础语法(列表、字典)和流程控制语句貌似也能处理一些复杂的问题,但是相对于相似的大量重复性的操作我们就没办法用之前的逻辑方法来解决了,这时候就需要一个可以概括这些重复性操作的统一代码来描述其特征来实现,所以函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
py3study
2020/01/17
7790
Python入门三部曲(三)
在函数greet_user()中,变量username是一个形参—-函数完成其工作所需要的一项信息.在代码greet_user(‘kobe’)中,值’kobe’是一个实参。
龙哥
2018/10/22
1.2K0
关于“Python”的核心知识点整理大全19
在Python 2.7中创建类时,需要做细微的修改——在括号内包含单词object:
用户10920956
2024/01/19
1240
关于“Python”的核心知识点整理大全19
函数
要执行函数定义的特定任务,可调用该函数。需要在程序中多次执行同一项任务时,无需反复编写完成该任务的代码,而只需调用执行该任务的函数,让Python运行其中的代码。
清菡
2020/12/02
8700
函数
Python基础
输入install ,选择Package Control:Install Package
仓颉cahr
2022/04/09
1.2K0
Python基础
Python应该要会一点吧
近期看了一下《Python编程 从入门到实践》这本书,然后写了一些笔记,和大家分享一下。
生信技能树
2023/02/27
1.8K0
Python应该要会一点吧
关于“Python”的核心知识点整理大全17
用户10920956
2024/01/19
1300
关于“Python”的核心知识点整理大全17
关于“Python”的核心知识点整理大全26
注意 JSON(JavaScript Object Notation)格式最初是为JavaScript开发的,但随后成了一种常见 格式,被包括Python在内的众多语言采用。
用户10920956
2024/01/19
1610
#小手一抬学Python# Python语法基础干货盘点【附源码】
笔者Python学习主要以《Python编程:从入门到实战》这本书为主,笔记的思路参考书里的脉络。其次还有笔者一年前在慕课上看的北理的嵩天教授的Python课程。嵩天教授的课很好,最大的特点是每个版块都有完整的示例代码。但可能对新手小白不太友好,有些不常用的函数容易弄混。《Python编程:从入门到实战》更适合零基础学习,里边会提到一些互通的编程思想和Python的格式规范。
程序员迪迪
2022/01/05
1.7K0
不用看网课就能学到python的文章(第五天)
特征其实就是一个变量,在类里我们称之为属性。 行为其实就是一个函数,在类里我们称之为方法。 类其实就是由 属性 和 方法 组成的一个抽象概念。
一只
2024/07/05
1130
不用看网课就能学到python的文章(第五天)
超详解——python函数定义和调用——小白篇
Python 不支持传统意义上的函数重载(即同名函数的不同定义),但是可以通过使用可变参数和默认参数来实现类似的功能。这种方法使得一个函数可以根据传递的参数数量和类型表现出不同的行为。下面我们详细讨论如何利用这些特性实现函数的“重载”。
小李很执着
2024/06/15
1030
相关推荐
Python:核心知识点整理大全16-笔记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验