鱼C论坛

 找回密码
 立即注册
查看: 1292|回复: 10

python在创建变量的时候能不能直接指定变量的类型?

[复制链接]
发表于 2018-1-23 21:09:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python在创建变量的时候能不能直接指定变量的类型?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-23 21:22:15 | 显示全部楼层
并不能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 21:37:13 From FishC Mobile | 显示全部楼层
不是不能,而且不需要
比如你可以初始化a=0来指明它是一个int,但是下面代码对a的赋值会覆盖原来的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 21:48:14 | 显示全部楼层
>>> temp = 123
>>> type(temp)
<class 'int'>
>>> temp = 'abc'
>>> type(temp)
<class 'str'>
>>> temp = 1.36
>>> type(temp)
<class 'float'>
>>> temp = [1, 2]
>>> type(temp)
<class 'list'>
>>> temp = {1:'one', 2:'two'}
>>> type(temp)
<class 'dict'>
>>> temp = (1,'abc')
>>> type(temp)
<class 'tuple'>
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-24 21:57:03 | 显示全部楼层
BngThea 发表于 2018-1-23 21:37
不是不能,而且不需要
比如你可以初始化a=0来指明它是一个int,但是下面代码对a的赋值会覆盖原来的值

那为什么使用input将输入的数字赋给一个变量,但是却不能直接使用这个变量来进行大小判断,而是需要用int将变量的类型改变并赋值给另外一个变量,为什么这样不行:
temp = input("给他赋值")
if temp == 8:
       print ("这是错误的")
else:
       print("随便写点")
但是需要这样才能进行判断:
temp = input("给他赋值")
guess = int(temp)
if guess == 8:
       print ("这是可以的")
else:
       print("随便写点")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-24 22:35:31 | 显示全部楼层
偷偷的玩笑 发表于 2018-1-24 21:57
那为什么使用input将输入的数字赋给一个变量,但是却不能直接使用这个变量来进行大小判断,而是需要用int ...

这是因为input函数返回值是str类型的,你要与一个整型作比较,就要先将str类型的返回值转换为整型。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-24 23:12:16 | 显示全部楼层
可以啊!比如:
dd=str(123456)
就是指定dd的类型是字符串类型的123456,而不是数字
另外如果你想要使用input函数赋值给一个变量,并且直接用哪个变量来进行大小判断,可以直接如下使用:
dd=int(input('请输入要比较的数字,只能输入数字,否则出错'))
这句话同样也是指定dd变量的类型是数字类型,而不是input函数得到的字符串类型。
因为input()函数返回数值类型是字符串类型,也就是上述str类型的,而str类型不能比较大小,所以你需要用int转换成数字类型才能比较大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-25 09:04:53 | 显示全部楼层
偷偷的玩笑 发表于 2018-1-24 21:57
那为什么使用input将输入的数字赋给一个变量,但是却不能直接使用这个变量来进行大小判断,而是需要用int ...

因为input函数返回值类型是固定的,为str
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-25 20:38:03 | 显示全部楼层
wyp02033 发表于 2018-1-24 22:35
这是因为input函数返回值是str类型的,你要与一个整型作比较,就要先将str类型的返回值转换为整型。

了解,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-25 20:38:37 | 显示全部楼层
冰封雪舞 发表于 2018-1-24 23:12
可以啊!比如:
dd=str(123456)
就是指定dd的类型是字符串类型的123456,而不是数字

了解,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-27 21:08:19 | 显示全部楼层
应该可以使用PEP 484 的方法来进行类型提示
不过一般来说,在创建变量时,在变量后加上 : type 就可以注释它的类型。比如
a: int = 5
b: list = [1, 2, 3]


class Myclass:
    pass

c: Myclass = Myclass()
(最后一个是指定一个类)。一般的IDE都可以识别类型注释,并且可以自动提示。
或者在变量赋值语句后加上 # type: xxx 也可以,比如说
a = 10  # type: int

对于函数的返回值,一般用
def a() -> int:
    return 1
这样来实现:箭头后面写上返回值的类型。
同时类型可以包含”或“,比如:
a: list or None = []
def b() -> int or bool:
c: 1 or False = 1
这种方法虽然不能硬性的规定变量的值,但IDE会在错误的输入、使用变量类型时给出提示。具体的内容我还是建议看文档吧,原文网址:https://www.python.org/dev/peps/pep-0484/
如果有什么地方说错的话还请指出吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 08:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表