小编deb*_*ish的帖子

何时是标准库模块中的函数,称为内置函数?

我对"内置"功能一词感到困惑.我认为这只意味着内置于解释器中的那些函数并记录在其中 - 2.内置函数
但似乎标准库模块中定义的函数也是内置函数(在某些情况下).例如 -

>>> import os
>>> os.chdir
<built-in function chdir>
>>> import warnings
>>> warnings.warn
<built-in function warn>
>>> import json
>>> json.dumps
<function dumps at 0x7f3643a240d0> # not built-in
>>> dir
<built-in function dir>
>>> 
Run Code Online (Sandbox Code Playgroud)

那么什么时候标准库模块中的函数称为内置函数,何时不是?

python python-3.x python-internals

26
推荐指数
3
解决办法
1594
查看次数

为什么super()不能使用除__new__之外的静态方法?

我理解这__new__是一个静态方法,super()可以从它调用创建一个新对象,如下所示:

>>> class A:
...     def __new__(cls):
...         print('__new__ called')
...         return super().__new__(cls)
...
>>> a = A()
__new__ called
Run Code Online (Sandbox Code Playgroud)

为什么super调用不能与其他静态方法一起使用?为什么以下失败?

>>> class B:
...     @staticmethod
...     def funcB():
...         print('funcB called')
...
>>> class C(B):
...     @staticmethod
...     def funcC():
...         print('funcC called')
...         super().funcB()
...
>>> c = C()
>>> c.funcC()
funcC called
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in funcC
RuntimeError: super(): …
Run Code Online (Sandbox Code Playgroud)

python static-methods super python-3.x

9
推荐指数
1
解决办法
901
查看次数

我应该使用属性还是 getter 和 setter?

我知道在python中使用getter和setter不是pythonic。而是应该使用属性装饰器。但我想知道以下场景 -

我有一个用几个实例属性初始化的类。然后稍后我需要向类添加其他实例属性。如果我不使用setter,那么我必须object.attribute = value在课外到处写。该类将没有self.attribute代码。当我需要跟踪类的属性时,这会不会成为问题(因为它们散布在类之外的代码中)?

python properties getter-setter python-3.x

6
推荐指数
1
解决办法
3414
查看次数

Python 异常 - 如何自动设置 args 属性?

假设我定义了以下异常:

>>> class MyError(Exception):
...     def __init__(self, arg1):
...         pass
Run Code Online (Sandbox Code Playgroud)

然后我实例化该类以创建一个异常对象:

>>> e = MyError('abc')
>>> e.args
('abc',)
Run Code Online (Sandbox Code Playgroud)

这里的args属性是如何设置的?(在 中__init__,我什么都不做。)

python exception python-3.x

6
推荐指数
2
解决办法
3617
查看次数

__bytes__ 方法在哪里可以找到?

官方文档说:

object.__bytes__(self)

被调用bytes以计算对象的字节字符串表示。这应该返回一个bytes对象。

但是当我执行dir(object)or dir(bytes)or 时dir(bytearray),该__bytes__方法不会出现。那么在哪里可以找到呢?

python python-3.x

6
推荐指数
1
解决办法
3269
查看次数

ctypes.cdll.LoadLibrary(无)如何工作?

ctypes.cdll.LoadLibrary()call 如何None作为参数传入?当我尝试下面的代码时,似乎math库自动加载:

>>> import ctypes
>>> lib = ctypes.cdll.LoadLibrary(None)
>>> lib.sin
<_FuncPtr object at 0x7f36dd65f430>
>>> lib.exp
<_FuncPtr object at 0x7f36dd65f4f8>
>>> 
Run Code Online (Sandbox Code Playgroud)

如何在math未明确指定的情况下加载库?是否加载了标准库中的所有共享库?幕后发生的事情我不明白.

python ctypes python-3.x

6
推荐指数
1
解决办法
2126
查看次数

Atom IDE autocomplete-python无法正常工作

我刚刚安装了Atom IDE和软件包autocomplete-python(在Windows上).但包裹不起作用.我是否必须进行任何设置更改?(我已禁用autocomplete-plus和autocomplete-snippets).

我需要单独安装Jedi吗?

python atom-editor

5
推荐指数
2
解决办法
7424
查看次数

为什么不使用pickle而不是struct?

我无法理解使用pickle模块还是使用struct模块。两者都将Python对象转换为字节流。它似乎pickle比包装和拆包struct模块容易。那么何时pickle使用和何时struct使用?

python struct pickle

3
推荐指数
2
解决办法
1340
查看次数

如何从ast.FunctionDef节点创建功能对象?

我试图了解执行python代码的过程。假设源具有函数定义。使用ast.parse(),我将其解析为一个ast,它将包含该FunctionDef节点类的实例。该节点实例不是可调用的,并且与函数对象不同。如何从这个ast创建具有所有dunder属性的函数对象?

python abstract-syntax-tree

3
推荐指数
1
解决办法
869
查看次数

输入input()函数的数据时箭头键不起作用

在linux中,当我尝试输入input()函数的数据时,箭头键不起作用.我得到逃脱角色.见下文(当我按下左箭头键时).

dp@hp:~$ python3 -c "x = input('enter a number '); print(x)"
enter a number 123^[[D^[[D
Run Code Online (Sandbox Code Playgroud)

readline安装了(我可以在python shell中导入它).箭头键在交互式解释器中工作正常,但在上述情况下(或input()从脚本执行时)不能正常工作.

可能是什么原因?

python linux

1
推荐指数
1
解决办法
762
查看次数