Python的字符串反射机制

区分两个概念,f1,"f1",前者是一个函数名,后者是一个字符串,是不同的东西..我们可以用f(1) 调用一个函数"f(1)"不可以去调用.就是不可以去调用看起来一样的函数.不能用字符串去调用看起来一样的函数.

这里实现了一个简单的WEB路由器

根据不同的url,执行不同的函数

但是写几百个函数,也是写这么多吗?

也不是

这是结果

反射机制就是在这种情况下被提出来的.

拿个最简单的函数看一下

就是str和下面的调用的函数是一致的

那么我们可以这样想,能不能就是让我们输入字符串就能调用函数

一定可以的,需求都出来了,必满足你

看接下来的操作

python内置了这样的 函数

这个函数有两个参数

前面是一个模块或者方法,后面是一个字符串

大致原理就是这样的

这个函数让get这个函数让程序在commons这个模块里面寻找一个叫inp的成员

这个是一个动态的过程


这就是python的反射,一种基于字符串的驱动模式.但是还是没有做的很完善就是老生常谈的问题/如果用户传入的str是匹配不到的怎么办呢?

这个是完善后的代码

通过hasattr函数,用于判断函数里面到底有没有这个对应的字符串


那么这个例子是在同一个目录里面的互相导包,要是全局的话,怎么办?

代码重构为这个样子的

分析一下写了什么东西

首先可以看到我们没有定义任何一行import语句

inp的格式被定义为,commons/home的形式,模拟web框架里面的url地址

可以看到报错一次

看这行代码

处理了用户的输入,使我们会的了两个字符串,并分别保存在modules和func变量里面

接着让程序去导入modules这个变量保存的字符串同名的模块

后面的程序就和以前一样了.这个地方还有一点没有写全.我懒得写了




(0)

相关推荐

  • 说说Python中的反射是什么?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • 什么是Python中的单元测试?常见面试题集锦!

    学习完Python之后,接下来面临的问题就是面试找工作,今天小编为大家汇总了10道Python经常面试题,并附带答案,希望能够给找工作的你们带来帮助. 有哪些工具可以帮助查找错误或执行静态分析? Py ...

  • Python reversed函数及用法

    reserved()是Pyton内置函数之一,其功能是对于给定的序列(包括列表.元组.字符串以及range(n)区间),该函数可以返回一个逆序序列的迭代器(用于遍历该逆序序列). reserved() ...

  • 万字长文丨大白话带你由浅入深Python编程语言

    Life is short, you need Python.(人生苦短,我用 Python.) --Bruce Eckel 前言 听说现在是全民 Python 的时代,虽然不知道事实如何,但学会 P ...

  • Python代码加速的10个最佳实用技巧

    如果有人问你 --"现在世界上增长最快的编程语言是什么?"答案很简单.那就是 Python.由于其简单的语法和丰富的库,它在世界范围内受到欢迎.现在,你几乎可以用python做任何 ...

  • 比正则快M倍?!Python替换字符串的新姿势

    大家好,欢迎来到 Crossin的编程教室 ! 我们在写代码的时候经常会遇到需要替换文本中字符串的情况.如果替换的不是固定字符,而是某种字符规律,那就要用到正则表达式.今天我们要给大家分享一个效率更高 ...

  • java中的反射机制

    前言: ​相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解AP ...

  • Python通过字符串调用函数

    有时候我们想通过字符串调用已经定义好的函数,一开始的思路及实现方式如下: def chinese(text):    print('jieba分词') def english(text):    pr ...

  • python 通关字符串操作方法详解-大量案例

    给IT入门加星标,提升编程技能 IT入门(ID:learncode)整理  原作者:战争热诚 字符串序列用于表示和存储文本,python中字符串是不可变对象.字符串是一个有序的字符的集合,用于存储和表 ...

  • 强者一出,谁与争锋?与Python相比,C+的运行速度究竟有多快?|python|编程语言|字符串|示例|算法

    对于数据科学家而言,热爱Python的理由数不胜数.但你是否也曾问过这样的问题:Python和C或C++等更专业的低级编程语言究竟有何不同呢?我想这是很多数据科学家或者Python用户曾经问过或者将来 ...

  • 说说Python中字符串大小写转换?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • Python中将字符串的M个字符重复N次

    给定一个字符串,如何使用python程序将其重复M个字符N次呢:python是一个跨平台的语言,在windows或者linux中都可以   首先提供一个字符串和一个非负整数N ,在这里我们将认为字符串 ...

  • python爬虫 - 字符串

    python字符串 Python中的字符串可以使用单引号.双引号和三引号(三个单引号或三个双引号,可以换行的)括起来,使用反斜杠 \ 转义特殊字符 Python3源码文件默认以UTF-8编码,所有字符 ...