Dav*_*ver 23
简而言之,在技术上可以向Python的内置†添加内容,但几乎从来没有必要(通常被认为是一个非常糟糕的主意).
更长的时间,显然可以修改Python的源代码并添加新的内置函数,关键字等......但是这样做的过程有点超出了问题的范围.
如果您想了解有关如何修改Python源代码的更多详细信息,如何编写可以从Python调用的C函数,或者其他内容,请编辑问题以使其更具体.
如果您不熟悉Python编程,并且您觉得应该在日常工作中修改核心语言,那么这可能只是一个指标,您应该只是了解它.对于大量不同的问题域,Python未经修改地使用(例如,numpy是一个促进科学计算的扩展,Blender将其用于3D动画),因此该语言可能也可以处理您的问题域.
†:您可以修改__builtin__模块以"添加新的内置"...但这几乎肯定是一个坏主意:任何依赖于它的代码将非常困难(并且令人困惑)在原始应用程序的上下文之外的任何地方使用.例如,考虑添加greater_than_zero"内置",然后在其他地方使用它:
$ cat foo.py
import __builtin__
__builtin__.greater_than_zero = lambda x: x > 0
def foo(x):
if greater_than_zero(x):
return "greater"
return "smaller"
Run Code Online (Sandbox Code Playgroud)
任何试图阅读该代码的人都会感到困惑,因为他们不知道在哪里greater_than_zero定义,并且任何试图从没有偷偷greater_than_zero进入的应用程序中使用该代码的人__builtin__都无法使用它.
更好的方法是使用Python的现有import语句:http://docs.python.org/tutorial/modules.html
对于 python 3.6 及以上版本使用import builtins。
# example 1
import builtins
def f():
print('f is called')
builtins.g = f
g() # output = f is called
####################################
# example 2
import builtins
k = print
def f(s):
k('new print called : ' + s)
builtins.print = f
print('abc') # output = new print is called abc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8236 次 |
| 最近记录: |