Python全栈开发day8

一、python生成/迭代器

yiled生成数据

  

  python迭代器, 访问数据(通过next一次一次去取)

二、反射

通过字符串的形式,导入模块

通过字符串的形式,到模块中,寻找指定的函数,并执行

实质:以字符串的形式,到对象中,操作(更改,删除等)其方法(或叫做操作成员)

__import__ 用于以字符串的形式寻找对象

getattr() 用于以字符串的形式去某个对象中寻找东西(函数,变量等)

hasattr()  用于以字符串的形式去某个对象中判断东西(函数,变量等)是否存在,存在返回True

setattr(模块名,变量名,变量值)   用于以字符串的形式去某个对象中添加东西(函数,变量等)(仅仅在内存中操作,源文件内容不变)

delattr()     用于以字符串的形式去某个对象中删除东西(函数,变量等)(仅仅在内存中操作,源文件内容不变)

自定义模块:


1

2

3

4

5

6

7

8

9

#!/bin/env python

# -*- coding:utf-8 -*-

# 自定义模块,名称:lianxi

name = ‘shaw‘

def s1():

    return ‘s1 函数‘

def s2():

    return ‘s2 函数‘

导入模块并执行:(方法-)


1

2

3

4

5

6

7

8

#!/bin/env python

# -*- coding:utf-8 -*-

import lianxi as lx

ret = lx.s1()

print(ret)

###### 结果 ########

C:\Python35\python.exe H:/PyCharm/Python/PY_learn/lianxi2.py

s1 函数

导入模块并执行:(方法二)通过字符串的形式,导入模块


1

2

3

4

5

6

7

8

9

10

#!/bin/env python

# -*- coding:utf-8 -*-

shuru = input(‘请输入模块名称:‘)

lx = __import__(shuru)      # 相当于:import lianxi as lx

ret = lx.s1()

print(ret)

###### 结果 ########

C:\Python35\python.exe H:/PyCharm/Python/PY_learn/lianxi2.py

请输入模块名称:lianxi

s1 函数

导入模块并执行:(方法三:反射


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#!/bin/env python

# -*- coding:utf-8 -*-

shuru = input(‘请输入模块名称:‘)

# 导入多级模块方法

# __import__(‘time.time‘,fromlist=True) 相当于from time import time

lx = __import__(shuru)

hansh = input(‘请输入函数名:‘)

target_func = getattr(lx,hansh)  # 到模块中找到函数名,相当于上面的 lx.s1

ret = target_func()             #  执行函数

print(ret)

######## 结果 ########

C:\Python35\python.exe H:/PyCharm/Python/PY_learn/lianxi2.py

请输入模块名称:lianxi

请输入函数名:s1

s1 函数

函数中找到东西


1

2

3

4

5

6

7

#!/bin/env python

# -*- coding:utf-8 -*-

shuru = input(‘请输入模块名称:‘)

lx = __import__(shuru)

hansh = input(‘请输入函数名:‘)

target_func = getattr(lx,‘name‘None# 到模块中找到变量,’None’用于如果没找到,返回的值(防止报错)

print(target_func )

反射的应用:web框架路由系统


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#!/bin/env python

# -*- coding:utf-8 -*-

def login():

    return ‘login‘

def logout():

    return ‘logout‘

######## index ########

#!/bin/env python

# -*- coding:utf-8 -*-

from exam.lib import acc

url = input(‘请输入url:‘)

ret = url.split(‘/‘)[-1]

if hasattr(acc,ret):

    r = getattr(acc,ret)

    s = r()

    print(s)

else:

    print(‘404‘)

三、面向对象基础

初始面向对象


1

2

3

4

5

6

7

8

9

10

11

12

class shaw:

    def f1(self):

        return ‘f1‘

 

    def f2(self, args):

        return args

 

obj = shaw()

ret = obj.f2(‘hah‘)

print(ret)

C:\Python35\python.exe H:/PyCharm/Python/PY_learn/lianxi.py

hah

1、面向对象不是所有情况都适用

2、面向对象编程过程:

a.定义类

b.根据类创建对象(创建一个类的实例)(操作这一步时,实质是执行了该类的__init__方法)

    

c.适用对象执行类中方法

    

3、self 为形式参数,由python内部自动传递

obj = shaw()

obj.f2(‘haha’)

参数传递流程为:

self==obj,args==’hah’

即self就为创建的对(实例)

4.面向对象特性一:封装


1

2

3

4

5

6

7

8

9

10

11

class shaw:

    def f1(self):

        return self.args            # self.args ==>obj.args 称为普通字段,存在于对象中

    def f2(self):

        return self.args

# obj.args = ‘www.cnblogs.com/opsedu‘ 这是封装的一种方式

obj = shaw()

obj.args = ‘www.cnblogs.com/opsedu‘   # 通过对象封装参数,不用每个方法中都写具体参数

ret = obj.f1()

print(ret)

    主流的封装方式:通过构造函数(方法)封装:

      


1

2

3

4

5

6

7

8

9

10

11

12

class shaw:

    def __init__(self):

        self.args = ‘www.cnblogs.com/opsedu‘

         

    def f1(self):

        return self.args

 

obj = shaw()

ret = obj.f1()

print(ret)

C:\Python35\python.exe H:/PyCharm/Python/PY_learn/lianxi.py

www.cnblogs.com/opsedu

注意:

解释器销毁对象的时候,自动调用__del__(析构方法)

封装适用场景,当同一类型的方法,具有相同参数时,直接封装到对象即可

5.面向对象特性二:继承

    

当派生类和基类中,同时存在某个方法,优先使用派生类方法


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#!/bin/env python

# -*- coding:utf-8 -*-

class shengwu:

    def chifan(self):

        print(self.name + ‘吃饭‘)

    def paobu(self):

        print(self.name + ‘不爱跑步‘)

class renlei(shengwu):

    def __init__(self, name):

        self.name = name

    def paobu(self):

        print(self.name + ‘爱跑步‘)

ret = renlei(‘李林‘)

ret.paobu()

C:\Python35\python.exe H:/PyCharm/Python/PY_learn/lx3.py

李林爱跑步

Python类可以同时继承多个类(c#/java不可以)


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#!/bin/env python

# -*- coding:utf-8 -*-

class shengwu:

    def chifan(self):

        print(self.name + ‘吃饭‘)

    def paobu(self):

        print(self.name + ‘不爱跑步‘)

# relei类

class renlei:

    def chuanyi(self):

        print(self.name + ‘穿衣服‘)

    def paobu(self):

        print(self.name + ‘不想跑步‘)

# boy类

class boy(shengwu, renlei):     # 继承多个类,继承优先级,从左到右()

    def __init__(self, name):

        self.name = name

    def paobu(self):

        print(self.name + ‘爱跑步‘)

ret = boy(‘李林‘)

ret.chifan()

ret.chuanyi()

ret.paobu()

######## 结果 ########

C:\Python35\python.exe H:/PyCharm/Python/PY_learn/lx3.py

李林吃饭

李林穿衣服

李林爱跑步

     

  执行父类的构造方法:

时间: 2024-11-03 21:03:17

Python全栈开发day8的相关文章

python全栈开发-Day8 函数基础

python全栈开发-Day8 函数 一 .引子 1. 为何要用函数之不用函数的问题 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一管理且维护难度极大  2. 函数是什么? 针对二中的问题,想象生活中的例子,修理工需要实现准备好工具箱里面放好锤子,扳手,钳子等工具,然后遇到锤钉子的场景,拿来锤子用就可以,而无需临时再制造一把锤子. 修理工===>程序员 具备某一功能的工具===>函数

Python全栈开发【基础三】

Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 1 def 函数名(参数): 2 3 ... 4 函数体 5 ... 6 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 总结使用函数的好处: 1.减少代码重用 2.保持一致性,易维护

Python全栈开发【第一篇】:初识Python

Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与while循环练习题 基本数据类型前引 Python 的种类 Cpython Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上. Jyhton Python的Java实现,Jython会将Pyth

Python全栈开发

Python全栈开发 一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了. 一.装饰器 装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator),装饰器的功能非常强大,但是理解起来有些困难,因此我尽量用最简单的例子一步步的说明这个原理. 1.不带参数的装饰器 假设我定义了一个函数f,想要在不改变原来函数定义的情况下,在函数运行前打印出start,函数运行后打印出end,要实现这样一个功能该怎么实现?看下面如何用

Python全栈开发【基础二】

Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 1 class int(object): 2 """ 3 int(x=0) -> integer 4 int(x, base=10) -&g

python全栈开发目录

python全栈开发目录 linux命令 初识python python基础数据类型 函数编程.set.深浅拷贝 内置函数 文件操作 装饰器 迭代器和生成器 常用模块 初识类和对象 类和对象(进阶) 反射 异常处理 socket.IO多路复用 线程.进程.协程 HTML CSS JavaScript DOM文档操作 jQuery实例 web框架本质 Tornado mysql基础 mysql进阶 ..... 基本算法 递归--二分法查找 冒泡排序 更多 线程池

Python全栈开发【基础四】

Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 匿名函数 lambda表达式:对于简单的函数,存在一种简便的表示方式,即lambda表达式 1 #这段代码 2 def calc(n): 3 return n**n 4 print(calc(10)) 5 6 #换成匿名函数 7 calc = lambda n:n**n 8 print(calc(10)) 匿名函数主要是和其它函数搭配使用 举例: 1 ########

自学Python全栈开发第一次笔记

我已经跟着视频自学好几天Python全栈开发了,今天决定听老师的,开始写blog,听说大神都回来写blog来记录自己的成长. 我特别认真的跟着这个视频来学习,(他们开课前的保证书,我也写了一份,哈哈哈...)我现在是准大学生,准备学习编程,日后做一个程序员,哈哈哈.听说程序员很苦逼,不过貌似挣得也很多啊.并且我貌似也只喜欢计算机这个方面,所以我想在这个行业发光. 前些天学习了一些Linux一些命令: pwd     查看你当前所在的目录  /root=计算机/E盘 /    是根目录 cd(ch

Python 全栈开发:python列表List

列表 列表是python中经常使用的数据类型,用于存放多个值. 表现形式:在[ ]内用逗号分隔,可以存放n个任意类型的值 eg: #单一类型 users=['yangli','yite','fixd'] #多类型,列表嵌套 users=['room01',['yangli',20,'音乐'],['yite',20,'篮球'],] 列表常用方法 和 函数 方法 函数 常用的操作 eg: len(list) #len(list) 计算列表的长度 ls = ['a','b','c','d'] leng