some python trap and hints

开篇几个链接, 有很多的tips, 值得认真学习

Python Tips, Tricks, and Hacks

http://www.siafoo.net/article/52

Programming FAQ

http://docs.python.org/faq/programming

 

下面是我整理的Python语言的几个特殊之处(多和c#相比)

1. python的多行注释

在很多语言中, /*   */是多行注释的写法, 但在python中, 没有专门的多行注释写法, 如果要写多行注释, 推荐的写法是, 每行以#开头. 当然, 也可以使用docstrings来做多行注释, 但不推荐这个写法. 

 

2. python没有枚举类型

我觉得一般情况下可以使用dict来模拟一个枚举, key为序号, value为枚举值. 

 

3. python没有switch语句

这个有点不太适应. 可以使用if 或者table的选择驱动来实现, 不闲麻烦, 还有类的多态也可以用一用.

 

4. 布尔类型和逻辑运算符

Python中用True和False来定义真假,None、任何数值类型中的0、空字符串''、空元组() 、空列表[]、空字典{}都被当作False,其他对象都可被看做True. 

Python用关键字and、or、not代替了C#语言中的逻辑运算符&&、|| 和! ,此外 Pyhton中参与逻辑运算的操作数不限于布尔类型,任何类型的值都可以参与逻辑运算, and 和 or 所执行的运算结果并不一定是布尔值,确切地说, 而是返回最后参与计算的运算子.(何为最后参与计算的运算子呢?  Python中的逻辑表达式是“短路”执行的,也就是说只有需要时才会进行逻辑表达式右边值的计算,例如表达式 a and b 只有当a为True时才计算b。), 例如

    'a' and 'b' 返回 'b'

    'a' or 'b' 返回 'a'

 

5. 超强的布尔表达式, 居然可以怎么写if (0 < i < 10)

def test(i):  

    if (0 < i < 10):

        print("ok")  

    else:    

        print("")    

 

6. i++, i-- 与++i, --i

python没有i++和i--, 可以使用i+=1, i-=1.

但++i和--i是可以用的, 但也不用于c语言, 这里的+和-是取正和取负运算符, ++i相当于+(+i), 结果仍然是i, --i相当于-(-i), 结果仍然是i


7. python的for语句

不同于C#的for语句, 更像foreach语句. 

 

8. python的while语句

while语句也很特别, 还可以带一个else字句

 

9. exception的抛出

这个和Object Pascal写法完全的一致, raise Exception("some error.")

 

10. exception的捕获

这个也和Object Pascal写法类似, 和C#的try catch不太一样, 另外不能直接使用err对象来输出callback信息, 需要使用额外的traceback类完成. try exception 还可以加else子句, 如果没有异常, else部分就会执行, 个人觉得没有必要, 仅仅的好处是, 代码结构显得清晰一点. (while 带else, 我觉得存在意义比这个大一些)

 
  
1 # -----------------------
2   try :
3 i = int(s)
4   except Exception as err:
5   # except Exception,err: #这是老的写法, 不推荐
6   print (err)
7   finally : # Clean up action
8   print ( " Goodbye! " )
9   # -----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值