python文件名通常以啥结尾

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python文件名通常以啥结尾相关的知识,希望对你有一定的参考价值。

python文件后缀一般有两个,分别是.py和.pyw
视窗用 python.exe 运行 .py ,用 pythonw.exe 运行 .pyw 。
这纯粹是因为安装视窗版 Python 时,扩展名 .py 自动被登记为用 python.exe 运行的文件,
而 .pyw 则被登记为用 pythonw.exe 运行。

.py 和 .pyw 之间的“其它差别”全都是 python.exe 和 pythonw.exe 之间的差别。

跟 python.exe 比较起来,pythonw.exe 有以下的不同:
1)执行时不会弹出控制台窗口(也叫 DOS 窗口)
2)所有向原有的 stdout 和 stderr 的输出都无效
3)所有从原有的 stdin 的读取都只会得到 EOF

.pyw 格式是被设计来运行开发完成的纯图形界面程序的。
纯图形界面程序的用户不需要看到控制台窗口。

值得一提的是,开发纯图形界面程序的时候,你可以暂时把 .pyw 改成 .py ,
以便运行时能调出控制台窗口,看到所有错误信息,方便除虫。
参考技术A python文件名通常以.py结尾,比如test.py

Python 支持有限形式的多重继承。以啥方式限制?

【中文标题】Python 支持有限形式的多重继承。以啥方式限制?【英文标题】:Python supports a limited form of multiple inheritance. In what way limited?Python 支持有限形式的多重继承。以什么方式限制? 【发布时间】:2012-05-27 07:33:11 【问题描述】:

在 python 教程中说“Python supports a limited form of multiple inheritance”。

有什么限制?

【问题讨论】:

【参考方案1】:

除了@Matt Anderson 的回答,我认为这些限制实际上是针对旧样式类(Python 2.6 still addresses 的教程)。

在 Python 3 教程中,文本现在是:Python supports a form of multiple inheritance as well。

【讨论】:

【参考方案2】:

我不确定 python 教程的作者所指的限制是什么,但我猜这部分与在 python 中实现方法/属性查找的方式有关(“方法解析顺序”或MRO)。 Python使用C3 superclass linearization机制;这是为了处理所谓的“The Diamond Problem”。

在您的类层次结构中引入多重继承后,任何给定的类都没有一个可以继承的潜在类,它只有“MRO 中的下一个类”,即使对于那些期望它们继承的类也是如此。特别是从某个类继承。

例如,如果 class A(object)class B(A)class C(A)class D(B, C),则类 D 的 MRO 为 D->B->C->A。 B 类可能已经被编写,可能是,认为它是 A 的后代,当它对自己调用 super() 时,它会在 A 上获得一个方法。但这不再是正确的;当 B 调用 super() 时,它会在 C 上获得一个方法,如果它存在的话。

如果您在被覆盖的方法中更改方法签名,这可能是一个问题。 B 类在调用 super 时期望来自 A 类的方法的签名,而是从 C 中获取一个方法,该方法可能没有该签名(从 B 类的角度来看,可能会或可能不会实现所需的行为)。

class A(object):
    def __init__(self, foo):
        print "A!"

class B(A):
    def __init__(self, foo, bar):
        print "B!"
        super(B, self).__init__(foo)

class C(A):
    def __init__(self, foo, baaz):
        print "C!"
        super(C, self).__init__(foo)

class D(B, C):
    def __init__(self, foo, bar):
        print "D!"
        super(D, self).__init__(foo, bar)

print D.mro()
D("foo", "bar")

在此代码示例中,类 B 和 C 合理地扩展了 A,并更改了它们的 __init__ 签名,但正确调用了它们预期的超类签名。但是当你像那样做 D 时,B 的有效“超类”变成了 C 而不是 A。当它调用 super 时,事情就爆炸了:

[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <type 'object'>]
D!
B!
Traceback (most recent call last):
  File "/tmp/multi_inherit.py", line 22, in <module>
    D("foo", "bar")
  File "/tmp/multi_inherit.py", line 19, in __init__
    super(D, self).__init__(foo, bar)
  File "/tmp/multi_inherit.py", line 9, in __init__
    super(B, self).__init__(foo)
TypeError: __init__() takes exactly 3 arguments (2 given)

同样的事情也可能发生在其他方法上(如果它们调用super()),并且“钻石”不必只出现在类层次结构的根部。

【讨论】:

这一切都是真的,但是任何具有多重继承的语言都必​​须处理这些问题。如果我们假设您的答案是正确的,那么哪种语言(带有 MI)不会具有有限形式的多重继承?

以上是关于python文件名通常以啥结尾的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式以啥结尾

Linux下怎么建立任务计划,shell文件是做啥的?以啥为后缀,前两者之间有啥关系

python文件后缀是啥

Visual Studio 以啥顺序编译源文件?

批处理文件:如果我知道文件夹名称以啥开头,但不知道全名,如何进入文件夹

js判断字符串以啥开头