如何在python中声明变量类型,C风格

问题描述 投票:0回答:8

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

int X,Y,Z;

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

x = 0
y = 0
z = 0

但这似乎需要大量工作,并且忽略了 python 比 C 更容易/更快的要点。 那么,做到这一点的最短方法是什么?

附注我知道你大多数时候不需要在 python 中声明数据类型,但我仍然想这样做,这样我的代码看起来尽可能像同学的。

python variables
8个回答
181
投票
从Python 3.6开始,你可以声明变量和函数的类型,如下所示:

explicit_number: type
或用于函数

def function(explicit_number: type) -> type: pass
这篇文章中的示例:

How to Use Static Type Checking in 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}!")
请参阅

typing模块的

文档


27
投票
编辑:Python 3.5 引入了

类型提示,它引入了一种指定变量类型的方法。这个答案是在这个功能可用之前写的。

Python 中无法声明变量,因为 C 意义上的“声明”和“变量”都不存在。这会将三个

名称绑定到同一个对象:

x = y = z = 0
    

14
投票
简单地说:在 python 中输入仅用于提示。

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

12
投票
Python 不一定比 C 更容易/更快,尽管它

可能更简单;)

为了澄清您所做的另一句话,“您不必声明数据类型” - 应该重申您

不能声明数据类型。当你给一个变量赋值时,该值的类型就变成了该变量的类型。这是一个微妙的区别,但仍然不同。


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

decimalTwenty = float(20)

在很多情况下,输入变量是没有意义的,因为它可以随时重新输入。然而在上面的例子中它可能很有用。还有其他类似的类型函数,例如:

int()

long()
float()
complex()

    


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

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


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

将标识符与对象关联起来称为“将名称绑定到对象”。这是 Python 中最接近变量声明的东西。名称可以在不同的时间与不同的对象相关联,因此声明要附加的数据类型是没有意义的——您只需这样做即可。通常,它是在一行或一行代码中完成的,该代码指定导致创建对象的名称和值的定义,例如

<variable> = 0

 或以 
def <funcname>
 开头的函数。

这有什么帮助。


0
投票
我使用数据类型来断言 python 2 和 3 中的唯一值。否则我无法使它们像 str 或 int 类型一样工作。但是,如果您需要检查可以具有任何类型(除了特定类型之外)的值,那么它们非常有用,并使代码可读性更好。

继承对象将在Python中创建一个类型。 class unset(object): pass >>> print type(unset) <type 'type'>

示例使用

:您可能希望使用条件或函数处理程序有条件地过滤或打印值,因此使用类型作为默认值将很有用。
from __future__ import print_function # make python2/3 compatible
class unset(object):
    pass


def some_func(a,b, show_if=unset):
    result = a + b
    
    ## just return it
    if show_if is unset:
        return result
    
    ## handle show_if to conditionally output something
    if hasattr(show_if,'__call__'):
        if show_if(result):
            print( "show_if %s = %s" % ( show_if.__name__ , result ))
    elif show_if:
        print(show_if, " condition met ", result)
        
    return result
    
print("Are > 5)")
for i in range(10):
    result = some_func(i,2, show_if= i>5 )
    
def is_even(val):
    return not val % 2


print("Are even")
for i in range(10):
    result = some_func(i,2, show_if= is_even )

输出

Are > 5) True condition met 8 True condition met 9 True condition met 10 True condition met 11 Are even show_if is_even = 2 show_if is_even = 4 show_if is_even = 6 show_if is_even = 8 show_if is_even = 10
if 

show_if=unset

是完美的用例,因为它更安全且可读性好。我还在枚举中使用了它们,这在 python 中并不是真正的东西。
    

© www.soinside.com 2019 - 2024. All rights reserved.