1.区分字符串与数值
话说在c语言这个强类型语言中,各变量类型被强制的区分开来,类型转换工作也必须由程序员显式完成,所以c语言的字符串与数值自然能区分的很清楚。
不过在弱类型的语言中,许多麻烦的类型转换操作解释器都会偷偷地帮你完成了。尤其是php,那叫一个方便简单,纯数字组成的字符串能直接与数值相加,实际用起来,我们经常没有注意到纯数字的字符串与数值没有什么区别。
如
1 <?php 2 $a1="5"+8; 3 $a2=5+"8"; 4 $a3=5+8; 5 $a4="5"+"8"; 6 //上面四句表达式的值,结果是一样的
因为php的解释器会按照需要自动的转换字符串类型和数值类型。在php中,加号+就是相加,管你是字符串还是数值,并且额外弄了个点号.表示字符串连接。
再看python中,加号放在字符串之间,表示的是字符串连接,放在数值之间,才表示相加。
所以,一个经常犯的错误就出现了,看如下代码:
1 num1=input("请输入第一个数字:") 2 num2=input("请输入第二个数字:") 3 sum=num1+num2 4 print("这两个数之和是:",sum)
原因在于input()返回的是一个字符串类型。我们可以在交互窗口试一试:
Type "help", "copyright", "credits" or "license" for more information. >>> a=input("enter a num") enter a nume >>> a=input("enter a num\n") enter a num 3 >>> a ‘3‘ >>>
因此,我们使用input()函数输入后得到的其实是一个包含数字的字符串。
那么使用加号表示将这两个字符串合并,‘3‘和‘2‘合并自然是‘32‘了。
所以,以后如果想使用input()函数输入一个数值,在得到结果后一定要记得使用int()将字符串类型转换为数值类型,否则会出现莫名其妙的问题!
2.空格和制表符
试试在一个正常的语句前面加上一个空格?
在其他如c语言中,这么做一点影响都没有。
但是在python中,这么做解释器会报错:IndentationError: unexpected indent
具体细节我也不是很清楚,目前猜测是解释器故意这样干的,目的是强制程序员养成良好的编程习惯,类似于强制缩进这种做法。
3.函数默认参数务必使用不可变对象
留个坑,以后补充
时间: 2024-09-30 09:40:56