2019独角兽企业重金招聘Python工程师标准>>>
1,逻辑运算
python中的逻辑运算符对比php而言,除了少了一个“!”之外,其它的“&”,“|”,and,or,not 都和PHP中的大致类似,什么叫大致类似?
因为,“&&”和“&”大致类似,“||”和“|”大致类似
就是这么任性,你拦不住!
用一个简单的例子,大概的说明一下,同时 请记住:判断一个变量的数据类型的方法,可以使用 isinstance
通过上面的代码示例,还引出一个问题,那就是 “布尔”类型的 “True”和“False”,使用 isinstance 去判断的时候其实是属于 “int”类型的,就像是下面这样:
但是,要注意,如果是通过 type 来比较,那么它们一定是不同的!
补充说明:在python中是没有“switch”的哦 ^_^
2,函数
在各种编程语言中,关于函数大致可以包括这么多内容:定义,调用,参数,返回值
当然了,python中是不会搞特殊化的,该有的必须要有,不该有的,额。。。。这个也可以有
废话不多说,我们画(截)个图来看看:
一个简单的例子,就说明了python中关于函数的基本知识,这些也是PHP中函数的知识。
你看,是不是也很容易学习呢!
python的函数,在PHP函数的常见功能上,增加了一些特性,比如说:返回多个值 与 可变参数
3,返回多个值
返回多个值,在PHP的函数中当然可以实现,但是它的限制是在 return 后面只能跟一个返回值变量,也就是说不能够写成这样:return a,b
但是在python中是允许你这么干的,就像是这样,果真是任性( ⊙ o ⊙ )啊!
通过上面程序示例输出的结果,你有没有发现,其实所谓的“函数返回多个值”的本质是什么?
你完全可以理解成,python在内部针对return做了手脚,当你给它多个值得时候,return会帮你把这个多个值“包装”成一个 tuple,然后给你返回这个tuple,这样就好像是可以返回多个值了。
理解了这句话, 你就知道为什么,当python中的函数返回多个值得时候,我们需要这么来接收了:
你看,是不是也很容易想到呢?
问一个问题:python返回多个值为什么会包装成tuple,而不是集合或者列表?
O(∩_∩)O哈!思考一下吧 ^_^
4,可变参数
如果你有过关于java程序的自动装箱,自动拆箱的编程经验,那么对于python的可变参数就是手到擒来的事情。
对于可变参数,有一个不错的测试案例,如下:
要求,定义一个函数,可以请求任意几个值的和,并且返回。
你怎么做?
当然,解决方案是很多的,但是现在我们用函数的可变参数来实现,就像下面这样:
你看,是不是就实现了呢?
现在,你可以传递任意个参数,然后它就会帮你求出它们的和。
正如程序中看到的一样,可以针对可变参数名“args”来做循环遍历,那你想不想知道“args”的数据类型是什么?
有没有很清楚?
再结合上面的返回多个值,一起想一想,是不是明白了呢?
那么,这个跟刚开始讲的java的拆箱和装箱有什么异同呢?
其实,在python中所谓的可变参数,就是当你传递多个参数的时候,python可以通过关键字“*”(假设可以这么看),把你的多个参数自动打包成一个tuple,然后传递到函数内部,当你要返回多个参数的时候,也是这样的一个过程。不过是一个传入,一个传出罢了!
如果,你还是有一点疑惑,那么看看下面的在python中称为关键字参数的东西,或许你就懂了。
5,关键字参数
什么是关键字参数,粗鲁一点的说,就是你可以给你的参数定义一个名字了。
你看,你可以给你的参数定义名字,同时还需要给它指定具体的值,那你是不是有想到python中的一种数据类型呢?
对,就是字典!
通过上面的对比,你大概就能够了解了。
在python中,如果你准备传递多个参数,有两种方案,一是采用“*”,自动打包成元组类型,另外一种是采用“**”,自动打包成字典类型。
两种方案各有各的优劣,可以根据不同的需求进行选择!
如果你准备让你的函数返回多个值,那么一定要记住python会自动帮你打包成元组类型!
那这时你可能就在想,如果我想让python帮我打包成字典类型该怎么做呢?那这个问题,还是不问的好了吧!
6,补充
综合上面“接近抽象”的解释,对于python的函数有了一个大概的了解,其中最重要的一点是关于python函数的参数。
那么这里补充,也是要告诉大家,python中的参数,我么可以人为的将其划分成四类:必选参数,可选参数,可变参数,关键字参数。
那么前两类在其它的编程语言中,比如说PHP,同样适用,重点是后面两种。那关于后面两种参数的使用,你可以联想到java中的自动拆箱、装箱机制,然后记住它们的操作符“*”和“**”就能够熟练运用了!
当然了,这四类参数在同一个函数中是可以混用的,但是顺序一定要是那个顺序哟!
------------------------------------------华丽的分割线---------------------------------------------
写这么多,还挺累