Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中声明变量类型、C样式_Python_C_Variables - Fatal编程技术网

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

如何在python中声明变量类型、C样式,python,c,variables,Python,C,Variables,我是一名编程专业的学生,我的老师从C开始教我们编程范例,他说如果我用python完成家庭作业就可以了(家庭作业更容易、更快)。我希望我的代码尽可能接近纯C语言。 问题是: 如何像在C中一样在python中声明变量的数据类型。例如: int X,Y,Z; 我知道我可以用python实现这一点: x = 0 y = 0 z = 0 但是这似乎需要做很多工作,而且它忽略了python比C更容易/更快的要点。 那么,最短的方法是什么呢? 另外,我知道大多数时候不必用python声明数据类型,但我还是

我是一名编程专业的学生,我的老师从C开始教我们编程范例,他说如果我用python完成家庭作业就可以了(家庭作业更容易、更快)。我希望我的代码尽可能接近纯C语言。
问题是:
如何像在C中一样在python中声明变量的数据类型。例如:

int X,Y,Z;
我知道我可以用python实现这一点:

x = 0
y = 0
z = 0
但是这似乎需要做很多工作,而且它忽略了python比C更容易/更快的要点。 那么,最短的方法是什么呢?
另外,我知道大多数时候不必用python声明数据类型,但我还是希望这样做,以便我的代码看起来尽可能像同学的代码

编辑:引入了Python3.5,它引入了一种指定变量类型的方法。此答案是在该功能可用之前编写的

在Python中没有方法声明变量,因为C意义上的“声明”和“变量”都不存在。这将将三个名称绑定到同一对象:

x = y = z = 0

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


为了澄清您所做的另一个陈述,“您不必声明数据类型”-应该重申您不能声明数据类型。将值指定给变量时,值的类型将成为变量的类型。这是一个细微的区别,但仍然不同。

Python中的所有内容都是一个对象,包括类、类实例、函数中的代码、称为模块的函数库,以及数据值(如整数、浮点数、字符串)或容器(如列表和字典)。它甚至包括名称空间,这些名称空间是类似字典(或映射)的容器,用于跟踪标识符名称(字符串对象)与当前存在的对象之间的关联。如果两个或多个标识符与同一对象关联,则对象甚至可以有多个名称

将标识符与对象关联称为“将名称绑定到对象”。这与Python中的变量声明最接近。名称可以在不同的时间与不同的对象相关联,因此声明要将名称附加到哪种类型的数据是没有意义的--您只需这样做。通常,它是在一行或一块代码中完成的,指定对象值的名称和定义,从而创建对象,例如
=0
或以
def
开头的函数


这有什么帮助。

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


松散类型只是简单地将复杂性从“设计/破解”时间转移到运行时间。

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

decimalTwenty = float(20)

在很多情况下,键入变量是没有意义的,因为它可以随时重新键入。然而,在上面的例子中,它可能是有用的。还有其他类似的类型函数,如:
int()
long()
float()
complex()
从Python 3.6开始,您可以声明变量和函数的类型,如下所示:

explicit_number: type
还是为了一个功能

def function(explicit_number: type) -> type:
    pass
这篇文章中的例子更为明确

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}!")

参见

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

x: int = 0
y: int = 0 
z: int = 0

我想说C比python简单。它缺少装饰符、元类、描述符等。诚然,这些都可以用C实现,但你的程序是复杂的,而不是底层语言。@aaron-注意,我说可能:)我用C写了25年多,python只写了一年——我仍然用C写我所有的小东西(但不是因为它简单)该语言在函数方面可能更简单。但问题是实现装饰器、元类、描述符并不简单,etcC是一种相当简单的语言。这绝对不意味着用C编写代码很简单。:)现在,您可以使用来声明数据类型,但在运行时没有使用它。您不太了解Python中的变量是什么。把它想象成C void*指针:它们没有固有的类型,它们是用来指代任何东西的名称。在Python中,对象存在于解释器的内存丛林中,您可以使用变量给它们命名并记住在何处找到它们。你的变量没有C意义上的类型,它只是指向一个对象。我很惊讶你这么说。因为这不会使变量类型化,这与赋值20.0没有什么不同。。。它们都不会使变量始终为浮点型。您仍然可以为该变量分配任何值。如果您正在使用并尝试为已具有mypy类型的变量分配不同类型的值,则会在分配中引发错误
不兼容类型
最后给出问题的正确答案。。。。但即使这样也无法避免为变量分配不兼容的值。只有像pycharm这样的IDE可以使用这些信息来查找可能的错误…@wmac这只是给开发人员的一个类型提示。事实上,智能IDE可以解析这一点并警告您不匹配,但这是它们所能做的最多的事情。考虑到Python的动态特性,它是可以接受的行为。感谢您,它仍然是一个信息/提示,仅用于java中。例如,当定义变量类型时,它不允许分配不兼容的类型。但python仍然如此。那么它真的有帮助吗?@wmac如果你需要验证数据对象,你可以用数据类来验证,但是因为python的duck类型是动态的,所以变量可以变异,这样解释器就不会检查静态类型,但是它对记录和开发了解变量是什么有很大帮助。这