一、文件的处理
在学习爬虫的时候对数据的储存和文件的处理有一定的了解,
这里就不多说了,链接:数据的储存一,数据的存储二
掌握好文件处理的步骤很好理解,对于其他文件的处理不懂的(数据库)之类的,可以先了解
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)