有没有办法在一个语句中合并 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 statement grammar:

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 modulefrom relative_module import 形式在语法中是两种完全不同的形式。

我认为 MartijnPieters 有点草率。确实很奇怪,但这是一种方法:

random, choice = (lambda x: (x, x.choice))(__import__("random"))

你看,__import__("random") returns random 模块对象。然后我们将其传递给 lambda 函数。 lambda 函数 returns 模块和模块的 choice 属性作为一个元组。然后我们将 randomchoice 分配给该元组。我绝不会在常规代码中使用它,但您可以这样做。我会这样做:

import random
choice = random.choice