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

目录

​编辑

8.6.4 使用 as 给模块指定别名

8.6.5 导入模块中的所有函数

8.7 函数编写指南

8.8 小结

第9章

9.1 创建和使用类

9.1.1 创建 Dog 类

dog.py

1. 方法__init__()

2. 在Python 2.7中创建类

9.1.2 根据类创建实例

1. 访问属性

2. 调用方法

3. 创建多个实例

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!


8.6.4 使用 as 给模块指定别名

你还可以给模块指定别名。通过给模块指定简短的别名(如给模块pizza指定别名p),让你 能够更轻松地调用模块中的函数。相比于pizza.make_pizza(),p.make_pizza()更为简洁:

import pizza as p
p.make_pizza(16, 'pepperoni')
p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

上述import语句给模块pizza指定了别名p,但该模块中所有函数的名称都没变。调用函数 make_pizza()时,可编写代码p.make_pizza()而不是pizza.make_pizza(),这样不仅能使代码更简 洁,还可以让你不再关注模块名,而专注于描述性的函数名。这些函数名明确地指出了函数的功 能,对理解代码而言,它们比模块名更重要。 给模块指定别名的通用语法如下:

import module_name as mn

8.6.5 导入模块中的所有函数

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

from pizza import *
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese') 

import语句中的星号让Python将模块pizza中的每个函数都复制到这个程序文件中。由于导入 了每个函数,可通过名称来调用每个函数,而无需使用句点表示法。然而,使用并非自己编写的 大型模块时,最好不要采用这种导入方法:如果模块中有函数的名称与你的项目中使用的名称相 同,可能导致意想不到的结果:Python可能遇到多个名称相同的函数或变量,进而覆盖函数,而不是分别导入所有的函数。

最佳的做法是,要么只导入你需要使用的函数,要么导入整个模块并使用句点表示法。这能 让代码更清晰,更容易阅读和理解。这里之所以介绍这种导入方法,只是想让你在阅读别人编写 的代码时,如果遇到类似于下面的import语句,能够理解它们

from module_name import *

8.7 函数编写指南

编写函数时,需要牢记几个细节。应给函数指定描述性名称,且只在其中使用小写字母和下 划线。描述性名称可帮助你和别人明白代码想要做什么。给模块命名时也应遵循上述约定。

每个函数都应包含简要地阐述其功能的注释,该注释应紧跟在函数定义后面,并采用文档字 符串格式。文档良好的函数让其他程序员只需阅读文档字符串中的描述就能够使用它:他们完全 可以相信代码如描述的那样运行;只要知道函数的名称、需要的实参以及返回值的类型,就能在 自己的程序中使用它。

给形参指定默认值时,等号两边不要有空格:

def function_name(parameter_0, parameter_1='default value')

对于函数调用中的关键字实参,也应遵循这种约定:

function_name(value_0, parameter_1='value') 

PEP 8(https://www.python.org/dev/peps/pep-0008/)建议代码行的长度不要超过79字符,这样 只要编辑器窗口适中,就能看到整行代码。如果形参很多,导致函数定义的长度超过了79字符, 可在函数定义中输入左括号后按回车键,并在下一行按两次Tab键,从而将形参列表和只缩进一 层的函数体区分开来。 大多数编辑器都会自动对齐后续参数列表行,使其缩进程度与你给第一个参数列表行指定的 缩进程度相同:

def function_name(parameter_0, parameter_1, parameter_2,parameter_3, parameter_4, parameter_5):function body...

如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开,这样将更容易知道前一 个函数在什么地方结束,下一个函数从什么地方开始。 所有的import语句都应放在文件开头,唯一例外的情形是,在文件开头使用了注释来描述整 个程序。

8.8 小结

在本章中,你学习了:如何编写函数,以及如何传递实参,让函数能够访问完成其工作所需 的信息;如何使用位置实参和关键字实参,以及如何接受任意数量的实参;显示输出的函数和返 回值的函数;如何将函数同列表、字典、if语句和while循环结合起来使用。你还知道了如何将 函数存储在被称为模块的独立文件中,让程序文件更简单、更易于理解。最后,你学习了函数编 写指南,遵循这些指南可让程序始终结构良好,并对你和其他人来说易于阅读。

程序员的目标之一是,编写简单的代码来完成任务,而函数有助于你实现这样的目标。它们 让你编写好代码块并确定其能够正确运行后,就可置之不理。确定函数能够正确地完成其工作后, 你就可以接着投身于下一个编码任务。

函数让你编写代码一次后,想重用它们多少次就重用多少次。需要运行函数中的代码时,只 需编写一行函数调用代码,就可让函数完成其工作。需要修改函数的行为时,只需修改一个代码 块,而所做的修改将影响调用这个函数的每个地方。

使用函数让程序更容易阅读,而良好的函数名概述了程序各个部分的作用。相对于阅读一系 列的代码块,阅读一系列函数调用让你能够更快地明白程序的作用。

函数还让代码更容易测试和调试。如果程序使用一系列的函数来完成其任务,而其中的每个 函数都完成一项具体的工作,测试和维护起来将容易得多:你可编写分别调用每个函数的程序, 并测试每个函数是否在它可能遇到的各种情形下都能正确地运行。经过这样的测试后你就能信心 满满,深信你每次调用这些函数时,它们都将正确地运行。 在

第9章,你将学习编写类。类将函数和数据整洁地封装起来,让你能够灵活而高效地使用 它们。

第9章

9.1 创建和使用类

使用类几乎可以模拟任何东西。下面来编写一个表示小狗的简单类Dog——它表示的不是特 定的小狗,而是任何小狗。对于大多数宠物狗,我们都知道些什么呢?它们都有名字和年龄;我 们还知道,大多数小狗还会蹲下和打滚。由于大多数小狗都具备上述两项信息(名字和年龄)和 两种行为(蹲下和打滚),我们的Dog类将包含它们。这个类让Python知道如何创建表示小狗的对 象。编写这个类后,我们将使用它来创建表示特定小狗的实例。

9.1.1 创建 Dog 类

根据Dog类创建的每个实例都将存储名字和年龄。我们赋予了每条小狗蹲下(sit())和打滚 (roll_over())的能力:

dog.py
1 class Dog():
2 """一次模拟小狗的简单尝试"""
3 def __init__(self, name, age):"""初始化属性name和age"""
4 self.name = nameself.age = age
5 def sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " is now sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")

这里需要注意的地方很多,但你也不用担心,本章充斥着这样的结构,你有大把的机会熟悉 它。在1处,我们定义了一个名为Dog的类。根据约定,在Python中,首字母大写的名称指的是类。 这个类定义中的括号是空的,因为我们要从空白创建这个类。在2处,我们编写了一个文档字符 串,对这个类的功能作了描述。

1. 方法__init__()

类中的函数称为方法;你前面学到的有关函数的一切都适用于方法,就目前而言,唯一重要 的差别是调用方法的方式。3处的方法__init__()是一个特殊的方法,每当你根据Dog类创建新实 例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约 定,旨在避免Python默认方法与普通方法发生名称冲突。

我们将方法__init__()定义成了包含三个形参:self、name和age。在这个方法的定义中,形 参self必不可少,还必须位于其他形参的前面。为何必须在方法定义中包含形参self呢?因为 Python调用这个__init__()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法 调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。 我们创建Dog实例时,Python将调用Dog类的方法__init__()。我们将通过实参向Dog()传递名字和 年龄;self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最 后两个形参(name和age)提供值。

4处定义的两个变量都有前缀self。以self为前缀的变量都可供类中的所有方法使用,我们 还可以通过类的任何实例来访问这些变量。self.name = name获取存储在形参name中的值,并将 其存储到变量name中,然后该变量被关联到当前创建的实例。self.age = age的作用与此类似。

像这样可通过实例访问的变量称为属性。

Dog类还定义了另外两个方法:sit()和roll_over()(见5)。由于这些方法不需要额外的信 息,如名字或年龄,因此它们只有一个形参self。我们后面将创建的实例能够访问这些方法,换 句话说,它们都会蹲下和打滚。当前,sit()和roll_over()所做的有限,它们只是打印一条消息, 指出小狗正蹲下或打滚。但可以扩展这些方法以模拟实际情况:如果这个类包含在一个计算机游 戏中,这些方法将包含创建小狗蹲下和打滚动画效果的代码。如果这个类是用于控制机器狗的, 这些方法将引导机器狗做出蹲下和打滚的动作。

2. 在Python 2.7中创建类

在Python 2.7中创建类时,需要做细微的修改——在括号内包含单词object:

class ClassName(object):--snip--

这让Python 2.7类的行为更像Python 3类,从而简化了你的工作。 在Python 2.7中定义Dog类时,代码类似于下面这样:

class Dog(object):--snip-- 

9.1.2 根据类创建实例

可将类视为有关如何创建实例的说明。Dog类是一系列说明,让Python知道如何创建表示特 定小狗的实例。

下面来创建一个表示特定小狗的实例:

class Dog():--snip--
1 my_dog = Dog('willie', 6)
2 print("My dog's name is " + my_dog.name.title() + ".")
3 print("My dog is " + str(my_dog.age) + " years old.") 

这里使用的是前一个示例中编写的Dog类。在1处,我们让Python创建一条名字为'willie'、 年龄为6的小狗。遇到这行代码时,Python使用实参'willie'和6调用Dog类中的方法__init__()。 方法__init__()创建一个表示特定小狗的示例,并使用我们提供的值来设置属性name和age。方法 __init__()并未显式地包含return语句,但Python自动返回一个表示这条小狗的实例。我们将这 个实例存储在变量my_dog中。在这里,命名约定很有用:我们通常可以认为首字母大写的名称(如 Dog)指的是类,而小写的名称(如my_dog)指的是根据类创建的实例。

1. 访问属性

要访问实例的属性,可使用句点表示法。在2处,我们编写了如下代码来访问my_dog的属性name的值:

my_dog.name 

句点表示法在Python中很常用,这种语法演示了Python如何获悉属性的值。在这里,Python 先找到实例my_dog,再查找与这个实例相关联的属性name。在Dog类中引用这个属性时,使用的 是self.name。在3处,我们使用同样的方法来获取属性age的值。在前面的第1条print语句中, my_dog.name.title()将my_dog的属性name的值'willie'改为首字母大写的;在第2条print语句中, str(my_dog.age)将my_dog的属性age的值6转换为字符串。 输出是有关my_dog的摘要:

My dog's name is Willie.
My dog is 6 years old. 
2. 调用方法

根据Dog类创建实例后,就可以使用句点表示法来调用Dog类中定义的任何方法。下面来让小 狗蹲下和打滚:

class Dog():--snip--
my_dog = Dog('willie', 6)
my_dog.sit()
my_dog.roll_over()

要调用方法,可指定实例的名称(这里是my_dog)和要调用的方法,并用句点分隔它们。遇 到代码my_dog.sit()时,Python在类Dog中查找方法sit()并运行其代码。Python以同样的方式解读 代码my_dog.roll_over()。 Willie按我们的命令做了:

Willie is now sitting.
Willie rolled over! 

这种语法很有用。如果给属性和方法指定了合适的描述性名称,如name、age、sit()和 roll_over(),即便是从未见过的代码块,我们也能够轻松地推断出它是做什么的。

3. 创建多个实例

可按需求根据类创建任意数量的实例。下面再创建一个名为your_dog的实例

class Dog():--snip--
my_dog = Dog('willie', 6)
your_dog = Dog('lucy', 3)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.") 
my_dog.sit()
print("\nYour dog's name is " + your_dog.name.title() + ".")
print("Your dog is " + str(your_dog.age) + " years old.")
your_dog.sit() 

在这个实例中,我们创建了两条小狗,它们分别名为Willie和Lucy。每条小狗都是一个独立 的实例,有自己的一组属性,能够执行相同的操作:

My dog's name is Willie.
My dog is 6 years old.
Willie is now sitting.
Your dog's name is Lucy.
Your dog is 3 years old.
Lucy is now sitting. 

就算我们给第二条小狗指定同样的名字和年龄,Python依然会根据Dog类创建另一个实例。 你可按需求根据一个类创建任意数量的实例,条件是将每个实例都存储在不同的变量中,或占用 列表或字典的不同位置。


关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!

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

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

相关文章

快速搭建知识付费平台?我有才,为你提供一站式解决方案

在当今数字化时代,知识付费已经成为一种趋势,越来越多的人愿意为有价值的知识付费。然而,公共知识付费平台虽然内容丰富,但难以满足个人或企业个性化的需求和品牌打造。同时,开发和维护一个属于自己的知识付费平台需要…

Oracle md5

SQL CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2) RETURN VARCHAR2 ISretval varchar2(32); BEGINretval : utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING > passwd));RETURN retval; END; 测试 select md5(lw112190) from dual 效果

70套大数据可视化大屏模板,总有一款适合你(含演示示例)

分享70款还不错的前端数据可视化大屏源码 其中包含行业:智慧社区、智慧物业、政务系统、智慧交通、智慧工程、智慧医疗、智慧金融银行等,全网最新、最多,最全、最酷、最炫大数据可视化模板。 你可以点击预览获取查看该源码资源的最终展示效果…

三、JS逆向

一、JS逆向 解释:在我们爬虫的过程中经常会遇到参数被加密的情况,这样只有先在前端搞清楚加密参数是怎么生成的才能继续我们的爬虫,而且此时我们还需要用python去执行这个加密的过程。本文主要讲怎么在浏览器调试JS,以及Python执…

基于ssm企业人事管理系统的设计与实现论文

摘 要 进入信息时代以来,很多数据都需要配套软件协助处理,这样可以解决传统方式带来的管理困扰。比如耗时长,成本高,维护数据困难,数据易丢失等缺点。本次使用数据库工具MySQL和编程技术SSM开发的企业人事管理系统&am…

后端对数据库查询的时间格式化

方式一: 在属性上加入注解,对日期进行格式化,如: JsonFormat(pattern "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime;方式二: 在WebMvcConfiguration 中扩展Spring MVC的消息转换器&#xf…

基于ssm旅行社管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅行社管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

RFID助力光伏硅片生产:透明溯源,质量至上

RFID助力光伏硅片生产:透明溯源,质量至上 应用背景 光伏产业作为可再生能源的主要发展方向之一,在过去几十年中取得了显著的进展。为了提高光伏产业的效率和质量。在光伏硅片生产过程中,原材料的获取、管理和追溯对于保证硅片品…

换能器信号工作原理

一、ANB板子发送一个周期,频率为40M和60M的 78V的激励脉冲信号。如下图 频率越高,周期越短。图像分辨率更高。原因如下: ①由于采用的是纵向分辨率。相邻两个点之间必须要间隔 下图的2分之兰大才能被识别。 二、当信号给到换能器后&#xf…

邮政快递物流查询,分析筛选出提前签收件

批量查询邮政快递单号的物流信息,将提前签收件分析筛选出来。 所需工具: 一个【快递批量查询高手】软件 邮政快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,并登录 步骤2:点击主界面左上角…

SpringBoot核心功能-temp

yml&类配置 Configuration-processor

nestjs守卫/全局守卫校验jwt

一、守卫 目标 部分接口需要用户登录后才可以访问,用户登录后可以颁发 jwt_token 给前端,前端在调用需要鉴权的接口,需要在请求头添加 jwt_token,后端校验通过才能继续访问,否则返回403无权访问 创建守卫 anth 安装…

mysql:不要在索引列进行数学运算和函数运算

不要在索引列进行数学运算和函数运算。这是因为数学运算和函数运算会改变索引列的值,导致索引失效。 如果需要进行计算或函数处理,最好将数据取出并在应用程序中进行处理。 下面举个对照的例子: 1)看语句explain select * from …

注塑模具ERP有哪些功能?可以帮助企业解决什么难题

不同的注塑模具有不同的业务流程和生产环节,有些生产企业在订单、物料需求计划、车间、班组负荷评估、项目成本核算、边角料统计分析等方面还存在不少问题。 与此同时,也有部分注塑模具企业通过ERP软件科学制定注塑生产排产,智能核算注塑物料…

用print太慢了!强烈推荐这款Python Debug工具~

作为程序员,我们都深知调试(Debug)在编程过程中的重要性。然而,使用传统的"print"语句进行调试可能效率较低,今天,笔者将推荐一款独具一格的Python调试工具——Reloadium。Reloadium为IDE添加了热…

深入理解Spring Security授权机制原理

原创/朱季谦 在Spring Security权限框架里,若要对后端http接口实现权限授权控制,有两种实现方式。 一、一种是基于注解方法级的鉴权,其中,注解方式又有Secured和PreAuthorize两种。 Secured如: 1 PostMapping("…

elementui select中添加新增标签

<el-select v-model"ruleForm.eventType" :placeholder"请选择事件类型&#xff0c;可手动添加" ref"template" clearable visible-change"(v) > visibleChange(v, template)"><el-option v-for"item in eventTypeOp…

【论文极速读】视频检索中的模态均衡方法

【论文极速读】视频检索中的模态均衡方法 FesianXu 20231206 at Baidu Search Team 前言 传统的视频搜索系统相关性部分主要以文本匹配为基础手段&#xff0c;在其中引入多模态向量容易收到『模态不均衡』的问题&#xff0c;论文[1]尝试对其进行解决&#xff0c;本文进行笔记。…

02markdown-学习笔记

一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 换行符<br>标签 写入一段测试用的正文第二段测试文本,如果要对文本进行换行可以使用<br>标签 文本修饰符 字体为斜体的修饰&#xff0c;一对星号包含 字符为粗体&#xff0c;两对星号包含 字体为…

如何定位线上OOM?

文章目录 造成OOM的原因1.一次性申请的太多2. 内存资源耗尽未释放3.本身资源不够 如何快速定位OOM&#xff1f;1.系统已经OOM了2.系统运行中还未OOM2.1导出dump文件&#xff1a;2.2.结合jvisualvm进行调试2.3 利用ArthasArthas可以做什么&#xff1f;如何使用Arthas小结 造成OO…