2017.8.1 ~8.3。python学习笔记---文件处理,函数,递归

Posted on 2017-08-03 13:43  蛟石  阅读(78)  评论(0)    收藏  举报

python文件处理

1全读到内存

2创建一个新的文件


 

函数为什么要有返回值?

因为我想要这个函数整个执行的一个结果。

 

参数:

形参:没有真正在内存中。

实参:实际存在,会在内存当中真是存在。用来调用的函数参数。

形参和实参的对应关系,是从左到右一一对应的。

位置参数:按照位置对应关系对应的有分前后关系的参数。

 

位置参数与关键字参数的顺序:位置参数要在关键字参数(如:x=3)的前面

默认参数:已经用关键字赋值了的关键字参数。

 

在写形参的时候,定义好的参数,叫作默认参数。

默认参数在函数调用的时候,可有可无。

 

参数组:

当实参不固定的时候,可以用参数组。用“*”,接收的是N个位置参数,转换成元组的形式

如:

def test(*args):

    print(args)

test(1,2,3,4,5)

或:

test(*[1,2,3,4,5])

显示:(1,2,3,4,5)

 

接收字典:用“**”,可以把N个关键字参数,转换成字典的形式。

如:

def test2(**kwargs):

    print(kwargs)

test2(name='stone',age=22,sex='F')

或:

test2(**{'name':'stone','age':22,'sex':'F'})

显示:{'name':'stone','age':22,'sex':'F'}

可以只打印选择具体某一个参数的键对应的值的参数:

       print(kwargs['sex'])

显示:F

 

例子:(**kwargs,与位置参数混合使用)

def test3(name,**kwargs):

    print(name)

    print(kwargs)

test3('stone',age=22,sex='m')

显示:

stone

{'sex':'m','age':'22'}

 

例子:(**kwargs,与默认参数混合使用(参数组**kwargs一定往后放)

def test4(name,age=18,**kwargs):

    print(name)

    print(age)

    print(kwargs)

test 4('stone',sex='m',hobby='music')

显示:

stone

18

{'hobby':'music','sex':'m'}


 局部变量和全局变量:

局部变量:在子程序(函数)中定义的变量,就是局部变量。

全局变量:在程序的一开始定义的变量,就是全局变量

 

字符串和整数,是不能在局部(函数)里改的。

其他稍微复杂一点的数据类型,如列表,字典,集合,类,都是可以在局部里面直接改全局的。


 

递归:自己调用自己,得能结束。

1要有结束 2必须每进入一层问题规模要减少 3效率不高