python内置函数之attr【反射】

#Auther Bob#--*--conding:utf-8 --*--

#我们来循序渐进的学习反射

import s1

#阶段1# def run():#     url = input("请输入要访问的url:")#     if url == ‘login‘:#         s1.login()#     elif url == ‘logout‘:#         s1.logout()#     elif url == ‘home‘:#         s1.home()#     else:#         print(‘404‘)## run()

#阶段2#如果能根据用户输入的值自动找到s1中的函数名,那么上面的函数就会变的很简单,把字符串变为函数名

# import s1# def run():#     url = input("请输入要访问的url:")#     #如果能用下面的方式,是不是就会变的很简单,但是实际上是不行的,但是我们可以通过反射来实现下面的效果#     # s1.url()#     #反射的作用:利用字符串的形式去对象(默认)中操作(寻找,判断,删除,设置)成员,就可以用gatarrer#     func = getattr(s1,url)   #这个意思是去模块s1中,找一个名称为url的函数名,然后把这个值赋值给func,执行func就是可以s1模块中的url函数#     func()#     #这里还有一个问题,如果s1中没有url这个函数,则会报错,那么我们在执行getattr的时候先判断下函数名url是否存在## run()

#阶段3,先判断url是否在模块s1中# import s1# def run():#     url = input("请输入要访问的url:")#     if hasattr(s1,url):#         func = getattr(s1,url)#         func()#     else:#         print(‘404‘)# run()

#上面介绍了反射的两个函数:getattr和hasattr,反射还有两个函数delattr()和setattr()# delattr()  #模块中删除成员# setattr()  #模块中设置成员

# import s1# def run():#     url = input("请输入要访问的url:")#     delattr(s1,‘login‘)#     if hasattr(s1,‘login‘):#         print(‘login is exist‘)#     else:#         print(‘login is not exist‘)## run()

#上面的方法可以使用字符串的形式操作模块

#如果我们有很多的模块,成百上千,那么我们导入模块也会导致很多的模块,这也是个相当费力的工作,在importr的时候也可以用到#反射

#下面的方法可以使用字符串的形式导入模块,__import__就可以实现,下面两种方法的效果是一样的

## import s1# s1.login()## obj = __import__(‘s1‘)# obj.login

# def run():#     url = input("请输入要访问的url:模块名/函数名:")#     mod,func = url.split(‘/‘)#     mod_obj = __import__(mod)#     f = getattr(mod_obj,func)#     f()## run()

#如果不用字符串的方式导入模块,我们导入其他模块的目录的模块是可以用下面的方法导致# import lib.s1,但是如果用字符串的方式导入,则用这个方法是不可以的

obj = __import__(‘lib.‘ + ‘s3‘,fromlist=True)print(obj)# <module ‘lib.s3‘ from ‘E:\\python\\pycharm\\模块\\lib\\s3.py‘>

#这里查看obj,可以看到我们导入了s3这个模块

obj = __import__(‘lib.s3‘)print(obj)# <module ‘lib‘ from ‘E:\\python\\pycharm\\模块\\lib\\__init__.py‘>

#这里查看obj,可以看到我们没有导入s3这个模块
时间: 2024-10-12 09:48:11

python内置函数之attr【反射】的相关文章

Python补充--Python内置函数清单

Python内置函数 Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义.最常见的内置函数是: print("Hello World!") 在Python教程中,我们已经提到下面一些内置函数:基本数据类型 type()反过头来看看 dir()   help()    len()词典 len()文本文件的输入输出 open()循环设计 range()   enumerate()    zip()循环对象

python内置函数积累

python中有很多的内置函数,所谓内置函数,就是在python中被自动加载的函数,任何时候都可以用.内置函数,这意味着我们不必为了使用该函数而导入模块.不必做任何操作,Python 就可识别内置函数.在今后的学习中,不断地去学习这些内置函数. getattr(object, name[, default]) 官网上对getattr()函数的说明如下:Return the value of the named attribute of object. name must be a string.

Python内置函数_数学运算类

本文和大家分享的主要是python内置函数数据运算类相关内容,一起来看看吧,希望对大家学习python 有所帮助. abs abs(x) 求绝对值 · X可以是整型,也可以是复数 · 若X是复数,则返回复数的模 >>> abs(-1)1>>> abs(-3+4j)5.0>>> bin bin(x) 将整数x转换为二进制字符串 >>> bin(2)'0b10'>>> bin(3)'0b11' bool bool([x]

Python内置函数进制转换的用法

使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns a

python基础9 -----python内置函数

python内置函数1 一.python内所有的内置函数: 二.python内常用的内置函数: 三.python内内置函数详解: 1.数学运算函数: 2.集合类函数: 3.逻辑类函数: 4.映射类函数: 5.IO操作:

Python 内置函数sorted()有哪些高级用法?

本文和大家分享的主要是python内置函数sorted()的相关内容,一起来看看吧,希望对大家学习python http://www.maiziedu.com/land/python/有所帮助. 1.对于 Python 内置函数 sorted() ,先拿来跟list(列表)中的成员函数 list.sort() 进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. 2.主要的区别在于, list.sort() 是对已经存在的列表进行操作,进而可以改变

[python基础知识]python内置函数map/reduce/filter

python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法)来迭代遍历每个序列中的元素. 返回bool_func结果为true的元素的序列(注意弄清楚序列是什么意思)http://blog.csdn.net/bolike/article/details/19997465序列参考</a> 如果filter参数值为None,list参数中所有为假的元 素都将被

lambda 表达式+python内置函数

#函数 def f1(a,b): retrun  a+b #lambda方式,形参(a,b):返回值(a+b) f2=lambda a,b : a+b 在一些比较简单的过程计算就可以用lambda python内置函数 abc 获取绝对值 all 循环对象,都为真就返回真否则为假 >>> li[1, 2, 3]>>> all(li)True #0为假 >>> li=[0,1,2,3]>>> all(li)False bool 真假判断

python内置函数(三)

python内置函数目前需要知道的如下: 代码: #!/usr/bin/env python# -*- coding:utf-8 -*-# author by lh #map(函数,可迭代的对象)def f1(x): return x+100ret=map(f1,[1,2,3,4,5])for i in ret: print iprint '---------------------------------------'#hash转换成哈希值,节约内存dic={ 'dvfhsuicbfhascj