有没有办法在一个语句中合并 import 和 from import ?
Is there a way to combine import and from import in one statement?
有没有办法将 import 和 from import 结合在一个语句中?
可以:
from random import choice
import random
合并成一个语句?
不,他们不能。
import_stmt ::= "import" module ["as" name] ( "," module ["as" name] )*
| "from" relative_module "import" identifier ["as" name]
( "," identifier ["as" name] )*
| "from" relative_module "import" "(" identifier ["as" name]
( "," identifier ["as" name] )* [","] ")"
| "from" module "import" "*"
import module
和 from relative_module import
形式在语法中是两种完全不同的形式。
我认为 MartijnPieters 有点草率。确实很奇怪,但这是一种方法:
random, choice = (lambda x: (x, x.choice))(__import__("random"))
你看,__import__("random")
returns random
模块对象。然后我们将其传递给 lambda
函数。 lambda
函数 returns 模块和模块的 choice
属性作为一个元组。然后我们将 random
和 choice
分配给该元组。我绝不会在常规代码中使用它,但您可以这样做。我会这样做:
import random
choice = random.choice
有没有办法将 import 和 from import 结合在一个语句中?
可以:
from random import choice
import random
合并成一个语句?
不,他们不能。
import_stmt ::= "import" module ["as" name] ( "," module ["as" name] )* | "from" relative_module "import" identifier ["as" name] ( "," identifier ["as" name] )* | "from" relative_module "import" "(" identifier ["as" name] ( "," identifier ["as" name] )* [","] ")" | "from" module "import" "*"
import module
和 from relative_module import
形式在语法中是两种完全不同的形式。
我认为 MartijnPieters 有点草率。确实很奇怪,但这是一种方法:
random, choice = (lambda x: (x, x.choice))(__import__("random"))
你看,__import__("random")
returns random
模块对象。然后我们将其传递给 lambda
函数。 lambda
函数 returns 模块和模块的 choice
属性作为一个元组。然后我们将 random
和 choice
分配给该元组。我绝不会在常规代码中使用它,但您可以这样做。我会这样做:
import random
choice = random.choice