学习内容:
1. 函数章节完成
2. 类的介绍及使用
禁止函数修改列表:调用函数时,调用函数的副本(即切片:[:])即可以保证函数所做的修改不会影响到原来的列表。
如下图,调用函数时调用菜单的副本,这样在我们输入菜单原来的列表时,仍然是原来的列表。
字典:{ }
列表:[ ]
元组: ( )
将函数存储在模块中
1. 导入整个模块:
使用import,先创建关于一个函数的模块并保存,然后使用Import 保存的模块名称,调用模块。要使用这个模块中的函数时,只需要使用module_name.fuction_name() 即可完成对模块中某个函数的调用。(模块名.函数名)
(或者是:from module_name import function_name )
2. 从一个模块中导入多个函数:
from module_name import function_0, function_1, function_2
(使用逗号分隔函数名,可根据需要从模块中导入任意数量的函数)
3. 使用as给函数指定别名:
from pizza import make_pizza as mp
从pizza模块中提取出make_pizza这个函数并把它命名为mp,这样只会要调用这个函数只需使用mp即可。
4. 导入模块中的所有函数:*
from pizza import * -->即导入模块pizza中的所有函数
5.其他事项:
给形参指定默认值时,等号两边不要有空格。
类的介绍
比如,我们先做一个关于小狗这个种类的界定。
class Dog():
def__init__(self,name,age): -->__下划线的作用与普通方法发生名称冲突。
self.name=name
self.age=age
def sit(self):
print(self.name.title()+' is now sitting.')
def roll_over(self):
print(self.name.title()+'rolled over!')
类这个地方我卡了很久,一直不太理解类和函数的区别及存在的意义。现在试着梳理一下这个类制作的逻辑:
首先我们定义一个类别,这个类别成为dog():
在这个类别下,我们首先定义方法__init__:如前所述,在我们建立一个类的时候都需要def定义一个方法,在这个方法中我们先输入self(self在这里作为一个形参,python之后调这个方法创建关于dog的实例时将会传入实参self,也就是说后面的My_dog,your_dog这些都是作为形参的存在)。self是一个指向实例的引用,让实例访问类中的属性和方法。后面的name和age作为最初始的形参,描述了这个类的基本属性,在后面需要直接输入值即可。后面的sit、roll_over只有一个形参self。
self这个概念有点难理解,所以我就权当死记硬背了,在定义类的时候记住一定不要少了这个self就行。
1. 给属性指定默认值:
如果对某个属性设置了默认值,就无需包含为它提供初始值的形参。可以直接在def后的等价条件中加入这样的一个赋值操作,在调用到这个变量时直接显示该定义好了的默认值。(课本P144)
如图,我们在上述操作中加入了默认的性别为女,这时候不需要形参,只要调用这个属性就会显示是一个女生。
2. 修改属性的值:
a.直接修改
使用上述的例子,我们在调用属性的时候把用户的性别改为男性,:
在倒数第二行代码中,直接重新对这个属性进行赋值,然后再输出即可。
b. 通过方法修改属性值
同样的改变性别的问题,我们可以直接定义一个更新属性的值。我们继续定义一个update的方法,然后让原本有默认值的self_gender = 定义方法中的gender对应的实参。然后在倒数两行代码中,先用这个方法,代入新的性别“male”后调用新的方法,使得gender更新为新设置的实参,最后再调用原本的gender方法,就发生了改变。
添加方法禁止修改后的属性往回调:添加if函数
3. 通过方法对属性的值进行递增