首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

import语句应该始终位于模块的顶部吗?

在编写Python代码时,建议将所有的import语句置于模块的顶部。这是因为将import语句放在顶部有助于提高代码的可读性,便于其他开发者快速了解模块所依赖的外部库。然而,需要注意的是,在Python 3.4及更高版本中,可以使用“absolute import”语法将import语句放在任何地方。

例如,在Python 3.4及更高版本中,可以这样写:

代码语言:python
复制
def my_function():
    import math
    result = math.sqrt(16)
    return result

尽管如此,为了保持代码的可读性和一致性,仍然建议将import语句置于模块的顶部。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python模块和包

,这些语句目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行 (import语句是可以在程序中任意位置使用,且针对同一个模块import多次,为了防止你重复导入,python...优化手段是:第一次导入之后就将模块名加载到内存,后续import语句仅是对已经加载到内存中模块对象增加了以此引用,不会重新执行模块语句),如下 1 #test.py 2 import spam...assert语句和__doc__文档字符串 3 由于一些程序可能依赖于assert语句或文档字符串,你应该在在确认需要情况下使用这些选项。...特别需要注意是:可以用import导入内置或者第三方模块,但是要绝对避免使用import来导入自定义包模块应该使用from... import ...绝对或者相对导入,且包相对导入只能用from...glance.cmd.manage.main() 千万别问:__all__不能解决,__all__是用于控制from...import * ,fuck

1.3K10

PEP8-Python代码规范样式编写指南摘录

代码行最大长度换行符应该在二元运算符之前还是之后?空行源文件编码导入模块模块级Dunder名称字符串引号表达式和语句空白忌讳其他建议什么时候使用结尾逗号?...当if语句过长而需要写成多行时,应该注意到if语句换行会产生4个空格缩进,这与嵌套在if语句内部代码集缩进会形成视觉冲突,该缩进代码也是4个空格。..., PIPE 导入总是放在文件顶部,紧随任何模块注释和文档字符串之后,以及模块全局变量和常量之前。...当代码更改时,始终优先考虑更新注释! 注释应该是完整句子。第一个单词应大写,除非它是一个以小写字母开头标识符(请勿更改标识符大小写!)。...继承设计 始终确定类方法和实例变量(统称为“属性”)应该是公共还是非公开。如有疑问,请选择非公开;后期将其变为公共属性比将公共属性变为非公开属性要容易。

1.5K10

腾讯大佬 Python 编码规范

本行之前应当空一行,继续完成关于本文档说明 如果文档说明可以在一行内结束,结尾三个双引号不需要换行;否则,就要像下面这样 """ import os, time import datetime...Windows 平台上,编码格式声明必须位于 python 文件第一行。Linux 平台上,编码格式声明通常位于 python 文件第二行,第一行是 python 解释器路径声明。 #!...参数列表, 索引或切片左括号前不应加空格 文档字符串 文档字符串是包、模块、类或函数里第一个语句。...如果文档字符串内容不能在一行内写完,首行须以句号、 问号或惊叹号结尾,接一空行,结束三重双引号必须独占一行。 导入模块 导入总应该放在文件顶部位于模块注释和文档字符串之后,模块全局变量和常量之前。...导入应该按照从最通用到最不通用顺序分组,分组之间空一行: 标准库导入 第三方库导入 应用程序指定导入 应当避免使用以下导入方法: from math import * 命名规范 模块尽量使用小写命名

1.5K10

Python|Google Python样式指南(3)

下列情况除外: (1)长导入语句。 (2)URL、路径名或注释中长标志。 (3)不包含空格长字符串模块级常量,不便跨行拆分,如URL或路径名。 (4)Pylint禁用注释。...接着是文档字符串剩下部分, 它应该与文档字符串第一行第一个引号对齐. 3.8.2模块 每个文件应该包含一个许可样板....Yes: import os import sys from typing import Mapping, SequenceNo: import os, sys 导入总应该放在文件顶部...,位于模块注释和文档字符串之后,模块全局变量和常量之前.导入应该按照从最通用到最不通用顺序分组: Python将来导入语句。...例如: import sys 第三方模块或软件包导入。例如: import tensorflow as tf 代码存储库子包导入。

80132

JavaScript中开发规范

文件注释 文件注释用于告诉不熟悉这段代码读者这个文件中包含哪些东西。 应该提供文件大体内容, 它作者, 依赖关系和兼容性信息。如下: ? 命名 变量, 使用 Camel 命名法。 ?...因为它并不是从 0 到 length - 1 进行遍历, 而是所有出现在对象及其原型链键值。 ? 二元和三元操作符 操作符始终写在前一行, 以免分号隐式插入产生预想不到问题。 ?...三元操作符用于替代 if 条件判断语句。 ?...,使用分号更能清楚哪里是语句起止,而且有些情况下,漏掉分号会出 BUG var a = 1 ; 块内函数声明 不要在块内声明一个函数 如果确实需要,使用函数表达式来初始化变量 if (x) { //..., err); }); ——— 导入和导出 使用import和export,只能位于代码顶部顶部,如果代码中部需要按需导入文件使用require。

1.1K30

android-代码样式规范

4.Java风格规则 使用Javadoc标准注释 每个文件应在顶部有一个版权声明,其后是package和import语句(每个块由空行分隔),最后是类或接口声明。...6.在标准位置定义字段 在文件顶部或在使用它们方法之前定义字段。...7.限制变量范围 将局部变量范围保持最小 循环变量应在for语句本身中声明 8.次序导入语句 android import 第三方 import java 和 javax 9.使用缩进空格...这样条件只能由合理地认为它是该域中最具权威性模块记录(以避免非授权组件重复日志记录)。此级别始终记录。 DEBUG:用于进一步注意设备上可能与调查和调试意外行为相关内容。...在模块单个函数调用链中,只有最内层函数应该返回错误,并且同一模块调用者应该只添加一些日志,如果这显着帮助隔离问题。

53030

一文弄懂Python代码规范

import Popen, PIPE 导入总是放在文件顶部,紧接着任何模块注释和文档字符串之后,而在模块全局变量和常量之前。...__等,应该放在模块docstring之后,但在除了__future__导入之外任何导入语句之前。...内联注释是与语句位于同一行注释。内联注释应与语句至少相隔两个空格。它们应以“#”和一个空格开头。 如果内联注释陈述了显而易见事实,则它们是不必要,实际上是分散注意力。...设计为通过 from M import * 使用模块应该使用 __all__ 机制防止导出全局变量,或者使用在这些全局变量前加下划线旧约定(这可能是为了表示这些全局变量是“模块非公开”)。...一个函数中所有 return 语句应该返回一个表达式,或者所有 return 语句都不应该返回任何值。

16010

python包package和模块module导入深入详解

imports) 导入注意事项 常规导入 常规导入应该是最常使用导入方式,大概是这样import sys 你只需要使用 import一词,然后指定你希望导入模块或包即可。...通过这种方式导入好处是可以一次性导入多个包或模块import os, sys, time 虽然这节省了空间,但是却违背了Python风格指南。Python风格指南建议将每个导入语句单独成行。...import urllib.error 这个情况不常见,但是对此有所了解总是没有坏处。 使用from语句导入 很多时候你只想要导入一个模块或库中某个部分。...局部导入 当你在局部作用域中导入模块时,你执行就是局部导入。如果你在Python脚本文件顶部导入一个模块,那么你就是在将该模块导入至全局作用域,这意味着之后任何函数或方法都可能访问该模块。...老实说,我几乎从没有使用过局部导入,主要是因为如果模块内部到处都有导入语句,会很难分辨出这样做原因和用途。根据约定,所有的导入语句应该位于模块顶部

2.7K10

关于Python导入模块,你可能没学透?!

imports) 导入注意事项 常规导入 常规导入应该是最常使用导入方式,大概是这样import sys 你只需要使用 import一词,然后指定你希望导入模块或包即可。...通过这种方式导入好处是可以一次性导入多个包或模块import os, sys, time 虽然这节省了空间,但是却违背了Python风格指南。Python风格指南建议将每个导入语句单独成行。...import urllib.error 这个情况不常见,但是对此有所了解总是没有坏处。 使用from语句导入 很多时候你只想要导入一个模块或库中某个部分。...局部导入 当你在局部作用域中导入模块时,你执行就是局部导入。如果你在Python脚本文件顶部导入一个模块,那么你就是在将该模块导入至全局作用域,这意味着之后任何函数或方法都可能访问该模块。...老实说,我几乎从没有使用过局部导入,主要是因为如果模块内部到处都有导入语句,会很难分辨出这样做原因和用途。根据约定,所有的导入语句应该位于模块顶部

81450

python 初学者

始终认为,学习是需要沉下心来慢慢钻研,是长 期;同时,学习不应该被赋予太多功利色彩。...Windows 平台上,编码格式声明必须位于 python 文件第一行。Linux 平台上,编码格式声明通常位于 python 文件第二行,第一行是 python 解释器路径声明。 #!...,默认值等号两边不要添加空格 左括号之后,右括号之前不要加添加空格 参数列表, 索引或切片左括号前不应加空格 文档字符串 文档字符串是包、模块、类或函数里第一个语句。...如果文档字符串内容不能在一行内写完,首行须以句号、 问号或惊叹号结尾,接一空行,结束三重双引号必须独占一行。 导入模块 导入总应该放在文件顶部位于模块注释和文档字符串之后,模块全局变量和常量之前。...导入应该按照从最通用到最不通用顺序分组,分组之间空一行: 标准库导入 第三方库导入 应用程序指定导入 应当避免使用以下导入方法: from math import * 命名规范 命名建议遵循一般性原则

79341

Python开发编码规范

2.导入 通常应该在单独行中导入(Imports) 推荐: import os import sys 不推荐: import sys, os 导入总是位于文件顶部,在模块注释和文档字符串之后...行内注释 (Inline Comments) 一个行内注释是和语句在同一行注释.行内注释应该谨慎适用. 行内注释应该至少用两个空格和语句分开....它们应该以'#'和单个空格开始. 5.文档化 编写好文档说明(也叫“docstrings”)约定在PEP 257中永恒不变。 要为所有的公共模块,函数,类以及方法编写文档说明。...模块模块应该是不含下划线,简短,小写名字. 因为模块名被映射到文件名, 有些文件系统大小写不敏感并且截短长名字 类名 几乎没有例外,类名总是使用首字母大写单词串(CapWords)约定....全局变量名 这些约定与那些用于函数约定差不多.被设计可以通过"from M import *"来使用那些模块,应该在那些不想被导入全局变量(还有内部函数和类)前加一个下划线).

56520

《Python 快速入门》一千个程序员有一千套编码规范

用单下划线(_)开头表示模块变量或函数是protected(使用import * from时不会包含). 用双下划线(__)开头实例变量或方法表示类内私有....尽管已经有很多现存模块使用类似于CapWords.py这样命名, 但现在已经不鼓励这样做, 因为如果模块名碰巧和类名一致, 这会让人困扰. 3、行长度 每行不超过80个字符 以下情况除外: 长导入模块语句...  import os, sys 导入总应该放在文件顶部, 位于模块注释和文档字符串之后, 模块全局变量和常量之前....,则他们之间应该空两行 对于超出每行规定字符数长表达式,应当敲回车缩进,通常除了首行其余各行都要在原来基础上再次缩进4个空格 3.语句 判断变量是否为None、False或True时不要用==,要用...is,例如,if a is None import语句应放在句首,导入时要尽量使用绝对导入不要使用相对导入,并且导入时最好指定相应模块某一具体功能,例如,from datetime import datetime

52310

导入Python模块执行了所有代码,你不知道__name__变量是什么意思

让我们先使用一段代码示例来探索导入和脚本工作方式。假设这些代码位于名为foo.py文件中。...这意味着在主程序中会有如下语句import foo Python解释器将搜索foo.py文件(以及搜索其他一些变体),在执行该模块之前,它将从import语句中将名称“ foo”分配给__name...__name__ = "foo" 设置__name__变量后,Python解释器通过一次执行一条语句方式执行模块所有代码。...但Python就不一样了,如果使用import语句导入一个模块,其实是先执行被导入模块所有代码,然后才会执行当前模块代码。...module 如果一个Python脚本,同时即可以作为主程序执行,也可以作为模块被导入,这就要求在模块被导入时不执行作为主程序执行时代码,所以如果是在主程序中执行代码,应该使用__main__变量进行判断

1.2K20

用了几年 Python,但你可能连这个都没学透

local imports) 导入注意事项 常规导入 常规导入应该是最常使用导入方式,大概是这样import sys 你只需要使用 import 一词,然后指定你希望导入模块或包即可。...import urllib.error 这个情况不常见,但是对此有所了解总是没有坏处。 使用 from 语句导入 很多时候你只想要导入一个模块或库中某个部分。...局部导入 当你在局部作用域中导入模块时,你执行就是局部导入。如果你在 Python 脚本文件顶部导入一个模块,那么你就是在将该模块导入至全局作用域,这意味着之后任何函数或方法都可能访问该模块。...老实说,我几乎从没有使用过局部导入,主要是因为如果模块内部到处都有导入语句,会很难分辨出这样做原因和用途。根据约定,所有的导入语句应该位于模块顶部。...我看过一些解决这个问题破解方法(hack),但是一般来说,你应该是重构代码,避免发生这种情况。 覆盖导入 当你创建模块与标准库中模块同名时,如果你导入这个模块,就会出现覆盖导入。

73041

关于Python导入模块,你可能没学透?!

imports) 导入注意事项 常规导入 常规导入应该是最常使用导入方式,大概是这样import sys 你只需要使用 import一词,然后指定你希望导入模块或包即可。...通过这种方式导入好处是可以一次性导入多个包或模块import os, sys, time 虽然这节省了空间,但是却违背了Python风格指南。Python风格指南建议将每个导入语句单独成行。...import urllib.error 这个情况不常见,但是对此有所了解总是没有坏处。 使用from语句导入 很多时候你只想要导入一个模块或库中某个部分。...局部导入 当你在局部作用域中导入模块时,你执行就是局部导入。如果你在Python脚本文件顶部导入一个模块,那么你就是在将该模块导入至全局作用域,这意味着之后任何函数或方法都可能访问该模块。...老实说,我几乎从没有使用过局部导入,主要是因为如果模块内部到处都有导入语句,会很难分辨出这样做原因和用途。根据约定,所有的导入语句应该位于模块顶部

87830

【TS 演化史 -- 14】拼写校正和动态导入表达式

接着来看看动态 import() 如何解决这个问题。 动态导入模块 更好方法是仅在需要时导入小部件模块。...但是,ES6 导入声明是完全静态,必须位于文件顶层,这意味着咱们不能将它们嵌套在if语句中,以便有条件地导入模块。这就是动态import()出现原因。...在main.ts模块中,删除文件顶部import声明,并使用import()表达式动态加载小部件,但前提是咱们确实找到了小部件容器: function renderWidget() { const...,因此import()表达式始终返回promise。...那么,在使用import()按需延迟加载模块客户端web应用程序中,应该针对哪个模块系统呢?我建议将——module esnext与 webpack 代码分割特性结合使用。

1.5K20

知道临时死区你才能更好使用 JS 变量

,变量 white 位于临时死区。...square(); // => 4 3.var, function, import 语句 与上述陈述相反,var 和 function 定义不受 TDZ 影响。它们被提升到当前作用域顶部。...通常,咱们一般对函数实现不太感兴趣,而只是想调用它。 因此,有时在定义函数之前先调用该函数是有意义。 有趣是,import 模块也被提升了。...在这里,let 变量语句 TDZ 没有作用。 在内部作用域中,typeof variable 语句在声明之前使用一个变量,抛出一个错误。...相反,可以在声明之前使用 var 变量时,var 变量会继承较旧行为,应该避免这样做。 在我看来,TDZ是语言规范中良好编码实践之一。

1.3K20

PEP 8-Python编码规范整理

5 源文件编码: 核心Python发行版中代码应该始终使用UTF-8(或Python 2中ASCII)。...6 导入库函数: 若是导入多个库函数,应该分开依次导入: import requests import csv 导入总是放在文件顶部,在任何模块注释和文档字符串之后,在模块全局变量和常量之前。...""" 一种简单方式是使用模块json来存储数据 """ # 使用函数json.dump()来存储数据# 函数json.dump()接受两个对象:要存储数据以及可用于存储数据文件对象 import...import sleep 从包含类模块中导入一个类时,通常可以这样写: from settings import Settings from ship import Ship import game_functions...3 行注释:顾名思义就是对某一语句行进行注释,注释应该语句至少隔开两个空格,用#和一个空格开始。

1.4K80
领券