我是一名编程学生,我的老师从C开始教我们编程范式,他说我用python交作业就可以了(作业更简单、更快)。我希望我的代码尽可能接近纯 C 语言。
问题是:
如何像在 C 中那样在 python 中声明变量的数据类型。 例如:
int X,Y,Z;
我知道我可以在 python 中做到这一点:
x = 0
y = 0
z = 0
但这似乎需要大量工作,并且忽略了 python 比 C 更容易/更快的要点。 那么,做到这一点的最短方法是什么?
附注我知道你大多数时候不需要在 python 中声明数据类型,但我仍然想这样做,这样我的代码看起来尽可能像同学的。
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
模块的
文档
编辑:Python 3.5 引入了Python 中无法声明变量,因为 C 意义上的“声明”和“变量”都不存在。这会将三个
名称绑定到同一个对象:
x = y = z = 0
x: int = 0
y: int = 0
z: int = 0
可能更简单;)
为了澄清您所做的另一句话,“您不必声明数据类型” - 应该重申您不能声明数据类型。当你给一个变量赋值时,该值的类型就变成了该变量的类型。这是一个微妙的区别,但仍然不同。
decimalTwenty = float(20)
在很多情况下,输入变量是没有意义的,因为它可以随时重新输入。然而在上面的例子中它可能很有用。还有其他类似的类型函数,例如:
int()
、
long()
、
float()
和
complex()
松散类型只是将复杂性从“设计/黑客”时间转移到运行时间。
将标识符与对象关联起来称为“将名称绑定到对象”。这是 Python 中最接近变量声明的东西。名称可以在不同的时间与不同的对象相关联,因此声明要附加的数据类型是没有意义的——您只需这样做即可。通常,它是在一行或一行代码中完成的,该代码指定导致创建对象的名称和值的定义,例如
<variable> = 0
或以
def <funcname>
开头的函数。这有什么帮助。
继承对象将在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