Python_Share_Mol_002
Python_Share_Mol_002
@(我的分享)[python]
按照惯例,扯闲篇
我就不知道你们咋想的,真是闲得蛋疼,来看我分享的文章。
讲真,到现在为止,我都不知道我可以分享什么干货出来,只能停留在扯蛋的境界。
扯完了就进入正题了
python是一门面向对象的脚本语言。我更愿意对比的方式来分享这门新语言。
最开始,我想用js或shell这些脚本语言来对比。但是看了一些python以后,发现这三种语言不能类比。比如js是纯脚本语言,而且还有点嵌入式的意思(尽管只是嵌入到html中)。而shell和操作系统结合得又太紧密。所以,最后还是选择C#来做为类比语言。
最大的原因,就是这两种语言都是面向对象的。
我觉得我不用再去分享什么是面向对象了,这样显得我太low了。我尽量把两种语言不太一样的地方都分享出来,当然,我不想分享太基础的。比如 print这种基础函数的用法。
坑1:
不得不说,C#的语法实在是太优雅了,最明显的地方,就是大括号的用法。我们可以很方便地把一个代码块放到一对大括号中。比如像这样:
if(李老板发财了)
{
label1:李老板就请大家吃饭;
李老板要买个空调;
}
else
{
goto labe11;
}
但在python里面,没有这样优雅的写法。python里面的代码块使用缩进来表示,它看起来像是这样:
if 李老板发财了:
李老板要请大家吃饭
李老板要买个空调
else:
李老板要请大家吃饭
李老板要买个空调
这样的写法一定会让很多C#出身的程序员头疼的。因为你一不小心就可能把代码块写错了。(上面的代码还告诉我们,python 没有goto这样反人类的语句,)
如果你非要把两句代码写在一行,那么两句代码中用“;”分隔。
坑2:
python中的变量是 没有 类型的。不信?你看:
molAge=33
print(molAge)
molAge="hello world"
print(molAge)
定义molAge这个变量的时候,前面没有任何类型修饰。在js中,好赖还有个var告诉我们,这是个变量,而在python中,毛都木有。
这还不是最奇葩的。
正如上面例子中你所看到的,molAge初始化是整型的,而第二次赋值的时候,它就变成字符串了,就像去了趟泰国一样。
当然,我不建议你们给变量赋不同类型的值,因为这里面会引发“值传递”和“引用传递”的坑。
亮点1:
你们肯定要吐嘈了,人家明明是语言特性,非要把这些特性说成是坑。
没错,确实是语言特性,但是对于你们来说,这些地方是需要注意的。因为C#的固有思路和写法,会让你不自觉地掉进这些坑里面。
总说人家有坑也不太好,下面的这个特性,体现了python写法简单,功能强大!
背景:
我们有一个字符串数组:
strArr=["python","入门","很","简单","为啥","大家","不","跟风","?"]
目标:
获取字符串数组中,从第2个元素到第5个元素的所有元素
// C#写法
var strArr =new string[] { "python", "入门", "很", "简单", "为啥", "大家", "不", "跟风", "?" };
StringBuilder container = new StringBuilder();
for (int i = 2; i < 6; i++)
{
container.Append(strArr[i]);
}
Console.WriteLine(container.ToString());
strArr
# python
strArr =[new string["python", "入门", "很", "简单", "为啥", "大家", "不", "跟风", "?" ]
print(strArr[2:6])
可以看到,python的写法非常简单,而且这是标准的python语法。
C#出身的程序员的坏习惯
我想,大部分C#出身的程序员,一定习惯于使用try...catch(exception e)来捕获并处理异常吧。这其实是一个非常不好的习惯。
我们在捕获异常的时候,一定要清楚我们捕获的是什么异常。比如是李老板找对象时出现404的异常?还是李老板指针为空的异常。
python里提供了很多类型的异常供我们使用。
如果你还接触了其它语言(非微软系语言,如java...),这些语言也都是需要捕获一个特定的异常,而不是捕获exception基类异常。
总结
我大概把python的语法看了一遍,加上自己搭建环境和敲代码验证,大概是一整天的时间。总体来说,python语法不难。

浙公网安备 33010602011771号