我在用
fid = fopen('fgfg.txt');
Run Code Online (Sandbox Code Playgroud)
打开一个文件.
有时在我设法关闭文件之前发生错误.在关闭Matlab之前,我无法对该文件做任何事情.
如果发生错误,如何关闭文件?
在调试我的代码时,我想使用列表理解.但是,当我在函数内部时,似乎无法从调试器中评估列表理解.
我使用的是Python 3.4.
脚本内容:
$ cat test.py
#!/usr/bin/python
def foo():
x = [1, 2, 3, 3, 4]
print(x)
foo()
Run Code Online (Sandbox Code Playgroud)
交互式调试:
$ python3 -mpdb test.py
> /tmp/test.py(3)<module>()
-> def foo():
(Pdb) step
> /tmp/test.py(8)<module>()
-> foo()
(Pdb)
--Call--
> /tmp/test.py(3)foo()
-> def foo():
(Pdb)
> /tmp/test.py(4)foo()
-> x = [1, 2, 3, 3, 4]
(Pdb)
> /tmp/test.py(6)foo()
-> print(x)
(Pdb) p [x for _ in range(1)]
*** NameError: name 'x' is not defined
(Pdb) p x
[1, 2, 3, 3, …
Run Code Online (Sandbox Code Playgroud) 在以交互方式返回的签名中help(foo)
,是什么意思/
?
In [37]: help(object.__eq__)
Help on wrapper_descriptor:
__eq__(self, value, /)
Return self==value.
In [55]: help(object.__init__)
Help on wrapper_descriptor:
__init__(self, /, *args, **kwargs)
Initialize self. See help(type(self)) for accurate signature.
Run Code Online (Sandbox Code Playgroud)
我认为它可能与仅关键字参数有关,但事实并非如此.当我使用仅关键字参数创建自己的函数时,位置和仅关键字参数由*
(按预期)分隔,而不是由/
.什么/
意思?
从Python 3.4开始,有一个名为的描述符DynamicClassAttribute
.文件说明:
types.DynamicClassAttribute(fget=None, fset=None, fdel=None, doc=None)
将类的属性访问路由到
__getattr__
.这是一个描述符,用于定义在通过实例和类访问时行为不同的属性.实例访问仍然正常,但通过类访问属性将被路由到类的
__getattr__
方法; 这是通过提高来完成的AttributeError
.这允许在实例上具有活动属性,并且在类上具有相同名称的虚拟属性(有关示例,请参阅枚举).
版本3.4中的新功能.
它显然用在枚举模块中:
# DynamicClassAttribute is used to provide access to the `name` and
# `value` properties of enum members while keeping some measure of
# protection from modification, while still allowing for an enumeration
# to have members named `name` and `value`. This works because enumeration
# members are not set directly on the enum class -- __getattr__ is
# …
Run Code Online (Sandbox Code Playgroud) Pythons gc.disable
禁用自动垃圾收集.据我了解,这会产生一些副作用.为什么有人想要禁用自动垃圾收集,如何在没有自动垃圾收集的情况下有效管理内存?
Pythons memoryview不支持datetime64
或timedelta
.好.但是,当我尝试创建一个memoryview
包含一个datetime64
或的结构化数组时timedelta
,它似乎可以工作...... 除非我将它分配给一个变量!
In [19]: memoryview(zeros(10, dtype=[("A", "m8[s]")]))
Out[19]: <memory at 0x7f1d455d6048>
In [20]: x = memoryview(zeros(10, dtype=[("A", "m8[s]")]))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
ValueError: cannot include dtype 'm' in a buffer
In [21]: x = _19
In [22]: x
Out[22]: <memory at 0x7f1d455d6048>
Run Code Online (Sandbox Code Playgroud)
这严重挑战了我对Python基本工作方式的理解.怎么能f()
和x = f()
不同,考虑到(1)IPythons REPL分配输出到_19
反正,和(2)的函数/类memoryview
没有知道什么是来电者会用它的输出做的呢?
我正在运行Python 3.4.1上的代码,numpy 1.10.0.dev + fbcc24f,在Linux 2.6.32-431.23.3.el6.x86_64,Scientific Linux发行版6.6上.
编辑
在Python …
python numpy read-eval-print-loop memoryview structured-array
在Python中,在混合类型的数字操作中,较窄的类型被扩展为另一个的类型,例如int
+ float
→ float
:
In [57]: 3 + 0.1
Out[57]: 3.1
Run Code Online (Sandbox Code Playgroud)
但是datetime.date
,我们有datetime.date
+ datetime.timedelta
→ datetime.date
,而不是 datetime.datetime
:
In [58]: datetime.date(2013, 1, 1) + datetime.timedelta(seconds=42)
Out[58]: datetime.date(2013, 1, 1)
Run Code Online (Sandbox Code Playgroud)
为什么拓宽推理应用于数字,而不是date
/ datetime
/ timedelta
?
(背景:我正在写一读例程,其中一个领域是一年的文件格式中,一个场中某一天的一年,场以来的毫秒数午夜当然,简单而明确的解决方案.datetime.datetime(2013, 1, 1, 0, 0, 0) + datetime.timedelta(seconds=42)
但一个同样可以说一个人应该改写3 + 0.1
为3.0 + 0.1
)
使用Python ConfigParser,是否可以跨外部使用插值?我的想法似乎告诉我,我已经看到它可能在某个地方,但我在搜索时找不到它.
这个例子不起作用,但它是为了让我知道我正在尝试做什么.
[section1]
root = /usr
[section2]
root = /usr/local
[section3]
dir1 = $(section1:root)/bin
dir2 = $(section2:root)/bin
Run Code Online (Sandbox Code Playgroud)
请注意,我使用的是Python 2.4.
在Matlab
,表达式M()
究竟在哪里做M
矩阵?
>> M = magic(3);
>> M()
ans =
8 1 6
3 5 7
4 9 2
Run Code Online (Sandbox Code Playgroud)
isequaln(M, M())
在任何情况下表达都是真的吗?是M()
简单的拷贝M
,或相同的表达,或者是有地方提到任何上下文M()
手段东西比指的是别的M
?也许在运算符重载的情况下?
我是python中的新手.
有人可以回答__requires__
以下代码中的含义吗?他们为什么要放在__requires__ = 'flower==0.4.0'
文件的开头?
#!/srv/virtualenvs/zeusenv/bin/python
__requires__ = 'flower==0.4.0'
import sys
from pkg_resources import load_entry_point
sys.exit(
load_entry_point('flower==0.4.0', 'console_scripts', 'flower')()
)
Run Code Online (Sandbox Code Playgroud) python ×8
matlab ×2
class ×1
configparser ×1
datetime ×1
debugging ×1
file-io ×1
inspection ×1
matrix ×1
memoryview ×1
numpy ×1
python-2.4 ×1
python-2.7 ×1
python-2.x ×1
python-3.4 ×1
python-3.x ×1
setuptools ×1