从1开始学python
上一次说到了循环结构,其实基础知识也就快完了,要知道一门语言也就那么多的东西,入门相对而言还是比较简单,关键是后期学习这么语言的一些特色的东西,以及学习一些大牛开发的模块(就像Java中的jar包,c语言中的库一样),一门语言只要基础学会了,知道了基本的语法,然后再看一下大佬们写的模块,学会使用,就差不多了,当然,如果你也是个大牛,那么可以考虑自己造点轮子,更有甚者,你可以优化一下这门语言。
1. 函数与方法
无论哪一门语言,都有函数这个概念,函数就是把一段代码封装起来,然后给这一块代码片一个输入,最后这块代码片选择性的给个输出,这就是一个函数了,使用函数为了提高代码复用性,同样在python中也有函数的概念,同时python中还有方法这个概念,但是我学过之后发现其实二者本质差不多,只是放的位置不一样,所以叫的名字就不一样了。如果学了面向对象,那么你就知道了,当这片代码写到类里面就叫做了方法,而对于像len这些python自己定义的就叫做函数,简单来说,方法需要一个对象来作用,就是需要一个对象.方法(),而函数则只需要直接用就行了:函数()。
在python中定义函数或者方法样子是一样的如下:
def demo(a):
print(a)
要注意的就是注意缩进,同样形式参数前不需要类型修饰,如果你需要返回值,直接return就行了,也不需要在函数上面声明,如下:
def demo(a):
print(a)
return a+1
所以python中的函数也是比较简单的。
2. 函数进阶– 参数缺省以及*,**参数
python中的参数也可以缺省,其缺省规则好Java一样,都是如果有不缺省的话只能在左边。例子如下:
def demo(a=1,b=2,c=3):
print(a)
在使用函数的时候,如果你要给指定的参数赋值可以指定一下,如下: demo(b=4),代表把形参b赋值为4。
在python中返回值也可以有多个,可以使用元组类型返回,关于元组后面会说。返回多个值如下:
def demo(a=1,b=2,c=3):
return a,b
而对于这种返回值的接受可以使用两个变量接受也可以使用一个元组接收,如下:
a,b=demo3()
x=demo3()
二者不同就在于a、b二者是普通变量,而x是一个元组。
关于* 与**,千万不要看到 * 就害怕,因为这个在c中代表指针,所以很多人对这个有阴影,而在python中这两个只是参数的修饰而已, * 说明参数接受的是元组,而 * *说明接受的字典。如下:
def demo4(*a,**b):
print(a)
print(b)
demo4(1,2,3,name="xx",age=12)
这个代表把1,2,3以元组方式赋给a,而name=’xx’,age=12以字典方式赋给b。
关于拆包,这还是针对上面那个问题,上面的1,2,3是直接写在里面的,如果你想直接把一个元组作为参数传给 *a,而一个字典直接给 **b,那么就需要解包,如下:
x=(1,2,3)
y={"name":"xx","age":12}
demo4(x,y)
如果不进行解包,而是直接进行参数传递,那么x,y会被当做一对元组输出,二者都会赋值给a,如果想要避免这种情况就需要进行解包。在调用的时候这样写 demo4( * x,**y)。
3. 列表、元组、字典
这三个都是python中的高级类型,不过使用起来也是很简单的,主要是对于这三中都有自己相应的方法,不过很多都类似Java中的。
3.1 列表
列表就像List一样,就像数组一样,声明时用[],并且可以使用索引取到相应的值。如下:
a = [1,2,3]
print(a[1])
他也有一些特殊的方法比如extend,append都可以向列表中增加数据,但是二者也不一样,你可以通过自己试验来学习这些方法。
3.2 元组
元组和列表是非常的类似的,只是元组一旦定义就不能够修改了,还有就是元组声明的时候用(),如下:
a = (1,2,3)
print(a[1])
对于元组还有一个需要注意的就是,当元组中只有一个数据的时候的声明:a=(1,),一定要加逗号,否则a就不是元组类型而只是数值类型。
3.3 字典
字典其实就是键值对,左边键右边值,但是字典与元组和列表不同在于,字典中数据是无序的,所以不能使用索引取值,只能使用key进行取值。如下:
a = {'name':'x','age':12}
print(a['age'])
3.4 对列表、元组以及字典的遍历
三者遍历类似,都是用for in进行遍历,但对于字典不同的是其每次使用的是key。如下:
a=[1,2,3]
b=(4,5,6)
c = {'name':'x','age':12}
for i in a:
print(i)
for i in b:
print(i)
for i in c:
print(i)
具体输出什么自行测试。
4. 字符串
其实字符串和列表之类的蛮像的,但是由于字符串较为常用,所以就单独说一下。
字符串声明和java类似,a=”hello world”,那个引号单引和双引都行。
在字符串中可以通过索引来得到字符的值a[0],并且字符串也有一些方法,比如进行去空格,拼接等,这里主要说一个截取的,因为pyton中字符串截取和其他不一样。a[x:y:z]代表从x开始截取,截取到y,步长为z,并且其字符串正序的话从0开始第一个位置是0,第二个是1,也可以倒序看,这样倒数第一个是-1.倒数第二个是-2.你可以多次试验。这里给出例子:
str = '0123456789'
print str[0:3] #截取第一位到第三位的字符
print str[:] #截取字符串的全部字符
print str[6:] #截取第七个字符到结尾
print str[:-3] #截取从头开始到倒数第三个字符之前
print str[2] #截取第三个字符
print str[-1] #截取倒数第一个字符
print str[::-1] #创造一个与原字符串顺序相反的字符串
print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
print str[-3:] #截取倒数第三位到结尾
print str[:-5:-3] #逆向截取,倒数第一位与倒数第五位之间的字符,步长为3
5. 全局变量
在python中全局变量同样声明在前面,但是与其他语言不一样的是,python中函数在默认情况下是不能对全局变量进行修改的,如:
num = 10
def demo():
num = 11
print(num)
demo()
print(num)
上面虽然num是全局变量,但是在demo中的num是又进行创建的一个局部变量所以最后一行print输出仍然是10,如果想避免这种情况,你需要global关键字。在函数定义中这样写:
def demo():
global num
num = 11
print(num)
这样num就是全局的了。