开发者

Safe casting in python

开发者 https://www.devze.com 2023-03-12 19:03 出处:网络
How to do safe cast in python In c# I can safe cast by keyword as, e.g.: string word=\"15\"; var x=word as int32// here I get 15

How to do safe cast in python

In c# I can safe cast by keyword as, e.g.:

string word="15";
var x=word as int32// here I get 15

string word="fifteen";
var x=word as int32// here I get null

Has python something simila开发者_开发技巧r to this?


Think not, but you may implement your own:

def safe_cast(val, to_type, default=None):
    try:
        return to_type(val)
    except (ValueError, TypeError):
        return default

safe_cast('tst', int) # will return None
safe_cast('tst', int, 0) # will return 0


I do realize that this is an old post, but this might be helpful to some one.

x = int(word) if word.isdigit() else None


I believe, you've heard about "pythonic" way to do things. So, safe casting would actually rely on "Ask forgiveness, not permission" rule.

s = 'abc'
try:
    val = float(s) # or int 
    # here goes the code that relies on val
except ValueError:
    # here goes the code that handles failed parsing
    # ...       


There is something similar:

>>> word="15"
>>> x=int(word)
>>> x
15


>>> word="fifteen"
>>> x=int(word)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'fifteen'


>>> try: 
...     x=int(word)
... except ValueError:
...     x=None
... 
>>> x is None
True


Casting has sense only for a variable (= chunk of memory whose content can change)

There are no variables whose content can change, in Python. There are only objects, that aren't contained in something: they have per se existence. Then, the type of an object can't change, AFAIK.

Then, casting has no sense in Python. That's my believing and opinion. Correct me if I am wrong, please.

.

As casting has no sense in Python, there is no sense to try to answer to this question.

The question reveals some miscomprehension of the fundamentals of Python and you will gain more profit obtaining answers after having explained what led you thinking that you need to cast something

0

精彩评论

暂无评论...
验证码 换一张
取 消