如何在python中声明变量类型,C样式

Gui*_*eba 14 c python variables

我是一名编程学生,我的老师从C开始教我们编程范例,他说我可以在python中完成我的作业(这对于作业来说更容易,更快).我希望我的代码能够像普通的C一样尽可能接近.问题是如何在python中为变量声明数据类型,就像在C中一样:

int X,Y,Z;
Run Code Online (Sandbox Code Playgroud)

我知道我可以在python中做到这一点

x = 0
y = 0
z = 0
Run Code Online (Sandbox Code Playgroud)

但这似乎是很多工作,它错过了python比C更容易/更快的点.所以,最简单的方法是什么?PS我知道你不必在大多数时间在python中声明数据类型,但我仍然想这样做,所以我的代码看起来像同学一样可能.

小智 33

从Python 3.6开始,您可以声明变量和函数的类型,如下所示:

explicit_number: type
Run Code Online (Sandbox Code Playgroud)

或功能

def function(explicit_number: type) -> type:
    pass
Run Code Online (Sandbox Code Playgroud)

本文中的示例:如何在Python 3.6中使用静态类型检查更为明确

from typing import Dict

def get_first_name(full_name: str) -> str:
    return full_name.split(" ")[0]

fallback_name: Dict[str, str] = {
    "first_name": "UserFirstName",
    "last_name": "UserLastName"
}

raw_name: str = input("Please enter your name: ")
first_name: str = get_first_name(raw_name)

# If the user didn't type anything in, use the fallback name
if not first_name:
    first_name = get_first_name(fallback_name)

print(f"Hi, {first_name}!")
Run Code Online (Sandbox Code Playgroud)

请参阅模块文档typing

  • 最后对这个问题的正确答案......但即使这样也无法避免为 vars 分配不兼容的值。只有像 pycharm 这样的 IDE 可以使用这些信息来查找可能的错误...... (4认同)
  • @wmac 这只是给开发人员的类型提示。事实上,智能 IDE 可以解析此内容并警告您有关不匹配的情况,但这只是它们能做的最多的事情。考虑到 Python 的动态特性,这是可以接受的行为。 (2认同)

Ign*_*ams 23

没有办法在Python中声明变量,因为C语义中的​​"声明"和"变量"都不存在.这会将三个名称绑定到同一个对象:

x = y = z = 0
Run Code Online (Sandbox Code Playgroud)

  • 从允许静态类型的 Python 3.5 开始,这已经过时了。请参阅 Cam T 的回答。 (6认同)

Kev*_*imm 6

Python不一定比C更容易/更快,尽管它可能更简单;)

为了澄清您所做的另一个陈述,"您不必声明数据类型" - 应该重申您不能声明数据类型.为变量赋值时,值的类型将成为变量的类型.这是一个微妙的差异,但仍然不同.

  • C是一种相当简单的语言.这绝对不意味着用C编写代码很简单.:) (4认同)

Dis*_*ame 6

我很惊讶没有人指出您实际上可以做到这一点:

decimalTwenty = float(20)
Run Code Online (Sandbox Code Playgroud)

在很多情况下,键入变量是没有意义的,因为可以随时重新键入它。但是,在上面的示例中,它可能很有用。还有其他类型的功能是这样,例如:int()long()float()complex()

  • 我很惊讶你这么说。因为这不会使您的变量键入,这与分配 20.0 的值没有什么不同......它们都不会使您的变量始终为浮动。您仍然可以为该变量分配任何值。 (2认同)

Pra*_*ith 6

简单地说:在 python 中键入仅用于提示。

x: int = 0
y: int = 0 
z: int = 0
Run Code Online (Sandbox Code Playgroud)


小智 5

但强类型和变量定义实际上是为了让开发更容易。如果您没有事先考虑清楚这些事情,那么您就不是在设计和开发代码,而只是在进行黑客攻击。

松散类型只是将复杂性从“设计/黑客”时间转移到运行时间。