python从入门到实践读书笔记(五)

从入门到实践读书笔记(五)

tag: python从零开始学习
种一棵树最好的时候,十年前或者今天
最近似乎越来越对图、连接、神经网络感兴趣了!

第八章 函数

代码往往需要重用,于是函数产生了。

函数的首部是重要的,函数名应该清晰明确。
每个函数都只负责一个简单的具体的工作,将复杂逻辑拆分为多个函数。
python中函数用关键字def声明。

传递实参

关键字形参

将形参名定义为其对应的是什么。

默认值
def display(pet_name, animal_type = "god"):
	print(pet_name.title()+":\t"+animal_type)
display("god", "dog")
# 或者	#使用位置形参、关键字形参 
display("lisi", animal_type = "ged")
display(animal_type = "god", pet_name = "wangwu")

没有默认值的形参必须在参数列表中先列出。

传递任意数量的值

python中*dogs创建一个名为dogs的空元组,无论传递几个参数进来。如果还需要其它类型的参数,其形参必须放在参数列表的前方。

def add01(*dogs):
	print(dogs)
add01('www')
add01('.cn', '.or', 'br')
传递任意数量的未知类型参数

如:由用户传入的自定义类型数据。

def add01(ag, **gdos):
	print(gdos)
add01(1,网络= 'www', 名称 = 'wwmxd')
add01(2,= '.cn ', 逻辑 = '.or', wt = 'br')

运行结果:

{'网络': 'www', '名称': 'wwmxd'}
{'国': '.cn ', '逻辑': '.or', 'wt': 'br'}
返回值

python中将非空字符串解读为True

def names(First_name, last_name, mid_name = ""):
    if mid_name :
        full_name = First_name + "\t" + mid_name + "\t" +last_name
    else:
        full_name = First_name + "\t" + last_name
    return full_name

print(names("阿迪斯", "托雷斯", '艾尔'))
print(names("阿迪斯",  '艾尔'))

python中函数可以返回任何类型的值。

禁止修改列表
ages = [1,2,3,4,5]
def add(ages):
    for age in ages :
        age += 3
        print(age)

add(ages[:])
print(ages)
将函数存储在模块中
导入模块

模块是扩展名为.py的文件,用import语句导入

import 要导入的模块名
导入函数
from 要导入函数所在的模块名 import 要导入的那些函数的函数名
别名

在导入语句末尾加,as可以给要导入的函数或者模块起应该别名。

导入模块中所有的函数

在导入语句末尾加*

from 要导入的模块名 import *

建议,只导入自己需要的函数。

技巧

1.每个函数都要包含简要介绍其功能的注释,在函数定义后面,
2.在给形参指定默认值和使用关键字参数时,等号两边不要有空格。

第九章 类

当在更大的代码规模上,需要重用时,类产生了。

创建和使用类

类名一般首字母大写,创建的实例是小写的。
1.int()方法,类似与C++或者java中的构造函数
self一个指向实例本身的引用
python调用_int()_方法来创建实例时,自动传入实参self。

每个与类相关联的方法都会自动传递实参self,但是每个需要使用参数的方法都需要在定义中加入需要的形参,除了打印之外。
以self为前缀的变量都可给类中所有的方法使用

class Dog():
    def _int_(self, name,age):
        self.name = name
        self.age = age

    def sit(self):
        print(self.name.title()+" is "+self.age+" dog.")

go = Dog()
go._int_("gpd", '22')
go.sit()

实例的应该存储在不同的变量中,以及列表和字典不同位置。
否则会发生覆盖。如下面代码:

i = 0
while(i<4):
    go1 = Dog()
    go1._int_("gpd", 20+i)
    go1.sit()
    go2 = Dog()
    go2._int_("gpd"+str(i), 20 + i)
    go2.sit()
    go3 = Dog()
    go3._int_("gpd_"+str(i), 20 + i)
    go3.sit()
    print("\n")

    i += 1

继承

创建子类时,父类必须在当前文件中,且在子类前面。

一个类继承另一个类时将自动获得另一个类的所有的属性和方法。子类方法`__init()__`中需要调用父类的`__init()__`方法 >特别注意:这里下划线是两个连在一起的!!!
class person(object):
    def __init__(self, name):
        self.name = name

class student(person):
    def __init__(self,name):
        super().__init__(name)
    def put(self):
        print("name: "+self.name)

def main():
    s = student("小明")
    s.put()

if __name__ == '__main__':
    main()
将实例用作属性

重写父类的方法
当一个类的属性和方法越来越多四,可以将其分为多个协同工作的小类。

class person(object):
    def __init__(self, name):
        self.name = name
    def put(self):
        print("your name is "+self.name.title())
# 将大类拆分为多个小类
class homework():
    def __init__(self, num=20):
        self.num = num
    def play(self):
        print("正在写作业!\t还有: "+str(self.num))

class student(person):
    def __init__(self, name):
        super().__init__(name)
        # 将其作为student类的一个属性
        self.homework = homework()
    def out(self):
        print("大姓名:"+self.name.upper())

def main():
    s1 = student("xhong")
    s1.out()
    print("---****---")
    s1.put()
    # 调用小类的方法
    s1.homework.play()

if __name__  == '__main__':
    main()
模拟实物、世界

现实世界的建模方法并没有对错之分,没有最好的方法,只有更适合的方法

导入类

一个模块中可以存储任意数量的类,其间一个存在某种相关性。

导入整个模块
语句如: import 要导入的模块名
导入模块中所有的类
语句如:from 模块名 import *
>不建议使用这种方式
要明确的写出在程序中的那些地方使用了导入的模块
当需要从一个模块中导入很多类时,最好导入整个模块,并使用模块名.类名来访问类。

工作流程

非常重要

建议:一开始应该让代码尽可能简单。先尽可能在一个文件中完成所有的工作,确定正确后,再将类移到独立的模块中。

python标准库

python3.6(包括3.6),所有的普通字典都是有序字典了

要多关注时代的发展,科技的发展变化

编码风格

类名应采用小驼峰命名法,即类名每个单词首字母大写,而不使用下划线,实例名和模块名都采用小写格式。并在单词之间加上下划线。
每个模块、每个类,在其定义后面都应该包含一个文档字符串,简要介绍其中类的功能。

在类中用一个空行来分隔方法;在模块中用两个空行来分隔类。
导入模块时,先编写导入标准库的import语句,再在一个空行后编写导入自己编写的模块的导入语句。

–END–

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值