python基础二

一、文件的处理

在学习爬虫的时候对数据的储存和文件的处理有一定的了解,

这里就不多说了,链接:数据的储存一,数据的存储二

掌握好文件处理的步骤很好理解,对于其他文件的处理不懂的(数据库)之类的,可以先了解

open()即可。

二、函数

函数概述:1、将一个功能写好,我们给它起一个名字,方便我们下次使用,减少代码的重复。

1、创建一个函数并计算1+2并且输出

    def add():

        x = 1+2

        print(x)

    add()

def 声明一个函数

add 你声明一个函数起的名字

add()调用该函数

2、返回值

按照1中的例子,我们如果不想打印x的值,我们下面需要用到这个x,我只想得到这个x的值。

就会用到函数的返回值。我们可以将1中的函数修改成有返回值的函数。

    def add():

        x = 1+2

        return x

    print(add())

return:返回值,即x。值得注意的是:return代表一个函数的结束。后面的代码不再执行。

add():此时我们调用add()就不会输出x的值,而add()就代表x的值,我们想要输出的话,

输出add()即可。

有更多疑问?

如果1中我们没有返回值,我们输出add()返回的内容是什么?

可不可以返回多个值?

可以自己试试!

3、参数

想一个问题,我们add这个函数只是固定的计算了1+2,如果我们想要计算用户输入的值怎么办?这里就用到了参数。

3.1位置参数(必须传入值,一一对应,多了,少了都会报错。)

    a =int(input("输入a:"))

    b =int(input("输入b:"))

    def add(x,y):

        return x+y

    c = add(a,b)

    print(c)

add(a,b):将a,b传递到add()函数中,a对应的是x,b对应的是y。x,y是形式参数,a,d是实际参数。a,b和x,y是一一对应的关系。

另:我们也可以这样传参add(1,2)位置传参,也可以add(x=1,y=b)关键字传参,也可以混合使用,但是位置传参在前,关键字传参在后。add(x=1,b)不可以。

3.2默认参数(可传,可不传)

默认参数:当传入的有值时我们就是用传入的值,当没有传入值时,我们可以使用默认值。

注意:默认参数必须在位置参数的后面。

    a =int(input("输入a:"))

    b =int(input("输入b:"))

    def add(x,y=10):

        return x+y

    c = add(a)

    print(c)

    d = add(a,b)

    print(d)

add(x,y=10):中的y=10就是默认参数,当传入2个参数时,就不使用默认值,当只传入一个参数的时候,那么第二个参数就会传入默认值,即10。

3.3动态参数

动态参数:当我们不确定函数需要传递的参数数量时,比如计算多个数的和,我们就可以用到动态参数。

    def add(*args):

        sum = 0

        for i in args:

            sum +=i

            return sum

    add(1,2,3)

    add(1,1,1,1,1,1)

*args:在参数名之前加一个*号之后,就可以传递任意数量的参数,args这个名字可以换,没有问题,但是相当于大家都统一这样写,这样大家一看就知道,动态参数的位置需要放在默认参数的前面,这句话不是说一定要有默认参数,如果有需要放在默认参数前。

    def add(**kwargs):

        print(kwargs)

    add(a=1,b=2,c=3)

    add(a=1)

**kwargs:加上两个*以关键字的形式传递,和我们的字典一样a:1,b:2,c:3,输出的是一个字典。

注意:如果两者都需要,*args需要放在**kwargs的前面

总结:传递参数的顺序:位置参数,*args,默认参数,**kwargs,没有其中任意一个参数,也还是这个顺序。

当有动态参数时,默认参数必须以关键字的形式传递。

3.4动态传递列表和字典。

    list = [1,2,3]

    def add(*args):

        print(args)

如果我们直接add(list),那么我们输出的也是一个列表,即没有分开

我们想达到add(1,2,3)这样的效果,只需要这样:add(*list)

同理:有这样一个字典dict={"name":"wmm","sex":"nan"}

只需要add(**dict)即可。

另:通常还有人将函数叫为方法,函数和方法是一个东西,不过我们通常将内置函数叫函数,自定义的叫方法,这个无所谓。

误区:

这个误区曾经在廖雪峰老师的博客中看到,觉得很有意思,在这里分享给大家。

def add(list=[])

    list.append(1)

    print(list)

add()#结果:[1]

add()#结果:[1,1]

add()#结果:[1,1,1]

我们发现,每次调用的时候都会在原来的list中添加,而我们想要的效果是只添加成[1]

我们可以这样写:

def add(list=[])

    if list !=None:

        list =[]

    list.append(1)

    print(list)

即可。

三、全局变量和局部变量

x = 1

def fun():

    print(x)

这里的x为全局变量,在函数中可以引用到

def fun():

    x=1

print(x)

报错:这里x为局部变量,在全局中引用不到,所以报错。

x = 1

def fun():

    x+=10

print(x)

报错:我们想要在函数中改变改变全局变量的值,需要用global声明他是一个全局变量。

即修改成:

x = 1

def fun():

    global x

    x+=10

print(x)

你可能感兴趣的:(python基础二)