__所有__在Python中意味着什么?

我懂了__all__在__init__.py文件。它有什么作用? 答案 这是该模块的公共对象列表,如import *。它覆盖了隐藏所有以下划线开头的所有内容的默认值。 来自: stackoverflow.com

“import *”到底导入什么?

在Python中,到底做了什么import *进口?__init__.py在包含的文件夹中找到? 例如是否需要声明from project.model import __init__,或者是from project.model import *充足的? 答案 的"优点"from xyz import *与其他形式的进口不同的是,它进口一切 (好吧,几乎…[参见下面的(a)]所有内容)从当前模块下的指定模块开始。without prefixing them with the module’s name。 >>> from math import * >>>pi 3.141592653589793 >>>sin(pi/2) >>>1.0 This practice (of importing * into the current namespace) is however discouraged因为它 提供了命名空间冲突的机会(假设您在导入之前有一个变量名称 pi) 如果导入的对象数量很大,效率可能会很低 没有明确记录变量/方法/类的起源(最好有程序的"自我文档"以供将来访问代码) 因此,通常我们将这种导入*实践限制为临时测试等。设计的 导入import *。 explicitly import a few objects only >>>from math import pi >>>pi >>>3.141592653589793 >>> sin(pi/2) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'sin' is not defined 或者import the module under its own namespace(或其别名,特别是如果这是一个长名称,并且程序多次引用其对象)...

“using”指令应该位于命名空间内部还是外部?

我一直在跑步风格警察一些Cusing指令应该位于命名空间内。 是否有技术原因将using指令位于命名空间内部而不是外部? 答案 两者之间实际上存在(微妙的)差异。 // File1.cs using System; namespace Outer.Inner { class Foo { static void Bar() { double d = Math.PI; } } } 现在假设有人将另一个文件 (File2.cs) 添加到项目中,如下所示: // File2.cs namespace Outer { class Math { } } 编译器搜索Outer在看那些之前using命名空间之外的指令,因此它发现Outer.Math代替System.Math。Outer.Math没有PI成员,因此 File1 现在已损坏。 如果您将using在您的名称空间声明中,如下所示: // File1b.cs namespace Outer.Inner { using System; class Foo { static void Bar() { double d = Math.PI; } } } 现在编译器搜索System搜索之前Outer, 发现System.Math,一切都很好。 有些人会认为Math对于用户定义的类来说可能是一个坏名字,因为已经有一个System;是差异,它会影响代码的可维护性。 注意到如果发生什么也很有趣Foo位于命名空间中Outer, 而不是Outer.Inner。Outer.Math在 File2 中,无论在何处,都会破坏 File1using去。using指示。...

“名称空间”,但被用作“类型”

我的程序使用一个名为的课程Time2。我将参考添加到TimeTest但是我一直遇到错误,'Time2' is a 'namespace' but is used like a 'type'。 有人可以告诉我这个错误是什么以及如何解决? namespace TimeTest { class TimeTest { static void Main(string[] args) { Time2 t1 = new Time2(); } } } 答案 我怀疑你有同样的问题至少两次。 这里: namespace TimeTest { class TimeTest { } …您正在宣布一种类型,其名称与所在的名称空间相同。不要那样做。 现在您显然有同样的问题Time2。我怀疑如果添加: using Time2; 到您的清单using指令,您的代码将编译。为什么这是一个坏主意。) (此外,除非您对写作基于时间的类型真的感兴趣,否则我建议您不要这样做…我说,作为一个人做 做到这一点。使用内置功能或第三方库,例如,嗯,矿。正确处理日期和时间是令人惊讶的毛茸茸的。:) 来自: stackoverflow.com

“无法加载类型[命名空间].Global”让我悲伤

在我的 .Net 2.0 Asp.net WebForms 应用程序中,我的 Global.asax 包含以下代码: <%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %> 但是,当我构建时,我收到一条错误消息 - 无法加载类型"MyNamespace.Global"。 这似乎是由于MyNamespace名称空间(背后的代码文件中定义Global.asax.cs)不是被编译器在全球。 注意:Global.asax 和 Global.asax.cs 位于同一文件夹中。 注意2:当使用 csc 从 vs 提示符进行编译时,它可以正常编译。 答案 我遇到一种情况导致这个问题当你指定一个构建的平台通过"构建配置"。 如果您指定 x86 作为构建平台,Visual Studio 将自动指定 bin/x86/Debug 作为该项目的输出目录。 我在我的情况中发现它们被输出到两者(Bin 和 Bin/x86/Debug),除了一些 dll,并且莫名其妙地最重要的是您的 Web 应用程序 dll,从 Bin 中丢失了 这显然会导致编译问题,从而导致"无法加载全局类型"异常。 来自: stackoverflow.com

\(反斜杠)在 PHP (5.3) 中起什么作用?

a 是什么意思\用 PHP 做? 例如,CSRF4PHP有\FALSE,\session_id, 和\Exception: public function __construct($timeout=300, $acceptGet=\FALSE){ $this->timeout = $timeout; if (\session_id()) { $this->acceptGet = (bool) $acceptGet; } else { throw new \Exception('Could not find session id', 1); } } 答案 \(反斜杠)是 PHP 5.3 中的名称空间分隔符。 A\在函数开始之前代表全局命名空间。 将其放在那里将确保所调用的函数来自全局命名空间,即使当前命名空间中存在同名函数。 来自: stackoverflow.com

C

人们会在何时何地使用命名空间别名,例如 using someOtherName = System.Timers.Timer; 在我看来,这只会给语言的理解带来更多的混乱。 答案 那是类型别名,而不是命名空间别名; using WinformTimer = System.Windows.Forms.Timer; using ThreadingTimer = System.Threading.Timer; (ps:感谢您的选择Timer;-p) 否则,如果您同时使用System.Windows.Forms.Timer和System.Timers.Timer在同一个文件中,您必须继续提供全名(因为Timer可能会令人困惑)。 它也发挥了作用extern用于使用来自不同程序集的具有相同完全限定类型名称的类型的别名 - 很少见,但支持它很有用。 实际上,我可以看到另一种用途:当您想要快速访问类型,但不想使用常规类型时using因为你不能导入一些冲突的扩展方法…有点复杂,但是…这是一个例子… namespace RealCode { //using Foo; // can't use this - it breaks DoSomething using Handy = Foo.Handy; using Bar; static class Program { static void Main() { Handy h = new Handy(); // prove available string test = "abc"; test.DoSomething(); // prove available } } } namespace Foo { static class TypeOne { public static void DoSomething(this string value) { } } class Handy {} } namespace Bar { static class TypeTwo { public static void DoSomething(this string value) { } } } 来自: stackoverflow....

C ++:命名空间 - 如何正确地在标题和源文件中使用?

考虑两个源文件:接口声明文件(*.h或者*.hpp)及其实现文件(*.cpp)。 让*.h文件如下: namespace MyNamespace { class MyClass { public: int foo(); }; } 我已经看到了在源文件中使用名称空间的两种不同的实践: *.cpp显示练习#1: #include "MyClass.h" using namespace MyNamespace; int MyClass::foo() { ... } *.cpp显示练习#2: #include "MyClass.h" namespace MyNamespace { int MyClass::foo() { ... } } **My question:**这两种实践之间是否有任何区别,一个实践比另一种方法更好? 答案 从代码可读性的角度来看,由于这个原因,我认为使用#2方法可能更好: 你可以using一次多个名称空间,该行下方写的任何对象或功能都可以属于这些名称空间中的任何一个(禁止命名冲突)。将整个文件包裹在一个namespace块更加明确,允许您声明.cpp文件中属于该名称空间的新功能和变量 来自: stackoverflow.com

C 命名空间和包含

为什么我们两者都需要using namespace和includeC 程序中的指令? 例如, #include <iostream> using namespace std; int main() { cout << "Hello world"; } 为什么仅仅拥有还不够#include <iostream>或者只是有using namespace std并摆脱另一个? (我正在考虑与 Java 进行类比,其中import java.net.*将从中导入所有内容java.net,您无需执行任何其他操作。) 答案 在C++这些概念是分开的。 您可以包含没有命名空间会产生歧义的内容。 使用命名空间,您可以引用两个具有相同名称的不同类。using指令,或者如果您这样做,则必须在您想要的名称空间中指定其他内容的名称空间。 另请注意,您不需要使用 - 您可以只使用 std::cout 或您需要访问的任何内容。 来自: stackoverflow.com

C 头文件中的“使用命名空间”

在我们所有的c课程中,所有的老师总是把using namespace std;就在之后#include在他们的.h文件。 所以我的问题是双重的:我这样说对吗?using namespace不应在头文件中使用,和/或是否有某种方法可以撤消它,例如: //header.h using namespace std { . . . } 还有一个同样的问题:应该有一个头文件#include它对应的所有标题.cpp文件需要,仅那些标头定义所需的内容,并让.cpp文件#include其余的,或没有,并将其所需的一切声明为extern? 问题背后的原因与上面相同:我不希望在包含时出现意外.h文件。 另外,如果我是对的,这是一个常见的错误吗? 谢谢你! 答案 你绝对不应该使用using namespace正是出于您所说的原因,它可以意外地更改包含该标头的任何其他文件中的代码含义。using namespace这是它如此危险的另一个原因。grep或类似的东西以确保using namespace不会在标题中调用,而是尝试任何更复杂的操作。 标头应仅包含需要编译的标头。#include因为您可以完全控制此类前向声明​​类的定义。 我不确定我是否会称其为常见,但它肯定偶尔会出现一次,通常是由不知道负面后果的新程序员编写的。 来自: stackoverflow.com

Django 错误 u'polls 不是已注册的命名空间

昨天我正在使用本教程开发我的第一个应用程序。 昨天有一些很棒的人帮助了我,并告诉我使用命名空间。 这是我点击第一页的问题时出现的错误。 NoReverseMatch at /polls/5/ u"'polls" is not a registered namespace Request Method: GET Request URL: http://127.0.0.1:8000/polls/5/ Django Version: 1.4.3 Exception Type: NoReverseMatch Exception Value: u"'polls" is not a registered namespace Exception Location: C:\hp\bin\Python\Lib\site-packages\django\template\defaulttags.py in render, line 424 Python Executable: C:\hp\bin\Python\python.exe Python Version: 2.5.2 Python Path: ['C:\\djcode\\mysite', 'C:\\hp\\bin\\Python\\python25.zip', 'C:\\hp\\bin\\Python\\DLLs', 'C:\\hp\\bin\\Python\\lib', 'C:\\hp\\bin\\Python\\lib\\plat-win', 'C:\\hp\\bin\\Python\\lib\\lib-tk', 'C:\\hp\\bin\\Python', 'C:\\hp\\bin\\Python\\lib\\site-packages', 'C:\\hp\\bin\\Python\\lib\\site-packages\\win32', 'C:\\hp\\bin\\Python\\lib\\site-packages\\win32\\lib', 'C:\\hp\\bin\\Python\\lib\\site-packages\\Pythonwin'] Server time: Fri, 15 Feb 2013 21:04:10 +1100 Error during template rendering In template C:\djcode\mysite\myapp\templates\myapp\detail....

JAXB编组时删除名称空间前缀

我的jaxb对象是由架构创建的。在编组时,XML元素被NS2注释。我已经尝试了在网络上存在的所有选项以解决此问题,但它们都没有起作用。我无法修改我的架构或更改软件包info.java。请帮忙 答案 经过大量的研究和修补,我终于设法解决了这个问题的解决方案。请接受我的道歉,因为我没有发布指向原始参考的链接 - 有很多,我没有记笔记 - 但是这一个当然很有用。 我的解决方案使用过滤XMLStreamWriter应用空名称空间上下文。 public class NoNamesWriter extends DelegatingXMLStreamWriter { private static final NamespaceContext emptyNamespaceContext = new NamespaceContext() { @Override public String getNamespaceURI(String prefix) { return ""; } @Override public String getPrefix(String namespaceURI) { return ""; } @Override public Iterator getPrefixes(String namespaceURI) { return null; } }; public static XMLStreamWriter filter(Writer writer) throws XMLStreamException { return new NoNamesWriter(XMLOutputFactory.newInstance().createXMLStreamWriter(writer)); } public NoNamesWriter(XMLStreamWriter writer) { super(writer); } @Override public NamespaceContext getNamespaceContext() { return emptyNamespaceContext; } } 你可以找到一个DelegatingXMLStreamWriter 这里。...

Laravel 5 类“App\Http\Controllers\File”未找到

我收到以下错误: Class 'App\Http\Controllers\File' not found 在 laravel 5 控制器中使用时: $files = File::files( $this->csvDir ); 我必须添加文件系统到composer.json和config/app.php。 这就是我改变的: 作曲家.json "require": { "laravel/framework": "5.0.*", "illuminate/html": "5.*", "illuminate/filesystem": "5.*" /* my try to repo */ }, 配置/应用程序.php 'providers' => [ // [...] // jerik 2015-04-17: get html Forms // http://laravel.io/forum/09-20-2014-html-form-class-not-found-in-laravel-5 'Illuminate\Html\HtmlServiceProvider', 'Illuminate\Filesystem\FilesystemServiceProvider', // try to add file 当我跑步时composer update,它运行良好,但没有输出文件系统已下载。 有什么建议或提示吗? 答案 首先,您应该考虑使用内置的存储外观。Filesystem除非您使用 S3 或 Rackspace,因为它已默认包含 - 请参阅Laravel 5 文档中的文件系统。 看来你应该导入File所以尝试一下 use File; 或者\File解决这个问题,因为现在您正在使用当前命名空间中的文件,并且可能File没有定义在App\Http\Controllers名称空间 来自: stackoverflow....

NameError:未定义全局名称

我在 Mac OS X 上使用 Python 2.6.1。 我有两个简单的 Python 文件(如下),但是当我运行时 python update_url.py 我在终端上得到: Traceback (most recent call last): File "update_urls.py", line 7, in <module> main() File "update_urls.py", line 4, in main db = SqliteDBzz() NameError: global name 'SqliteDBzz' is not defined 我尝试以不同的方式重命名文件和类,这就是为什么末尾有 x 和 z 的原因。 文件 sqlitebx.py class SqliteDBzz: connection = '' curser = '' def connect(self): print "foo" def find_or_create(self, table, column, value): print "baar" 文件 update_url.py import sqlitedbx def main(): db = SqliteDBzz() db....

php名称空间和“使用”

我在名称空间和use语句。 我有三个文件:ShapeInterface.php,,,,Shape.php和Circle.php。 我正在尝试使用相对路径来做到这一点,因此我将其放在所有类中: namespace Shape; 在我的圈子课上,我有以下内容: namespace Shape; //use Shape; //use ShapeInterface; include 'Shape.php'; include 'ShapeInterface.php'; class Circle extends Shape implements ShapeInterface{ .... 如果我使用include陈述我没有错误。如果我尝试use我得到的陈述: 致命错误:在/users/shawn/documents/work/sites/workspace/shape/shape/circle.php中找不到类" Shape \ Shape"。 有人可以在这个问题上给我一点指导吗? 答案 这use操作员用于给出类,界面或其他名称空间的名称的别名。最多use语句是指您要缩短的名称空间或类: use My\Full\Namespace; 等同于: use My\Full\Namespace as Namespace; // Namespace\Foo is now shorthand for My\Full\Namespace\Foo 如果是use运算符与类或接口名称一起使用,它具有以下用途: // after this, "new DifferentName();" would instantiate a My\Full\Classname use My\Full\Classname as DifferentName; // global class - making "new ArrayObject()" and "new \ArrayObject()" equivalent use ArrayObject; 这use操作员不要与自动加载。一堂课是自动加载的(否定了需要include)通过注册自动加载器(例如spl_autoload_register)。您可能想阅读PSR-4查看合适的自动加载器实现。...