Python入门教程[3]-函数

  • A+
所属分类:python快速入门
摘要为了简化代码,我们会用到函数的概念,那么这一篇教程我们就来看一下在python中是如何实现函数的编写的。

函数

我们经常在同一个程序中多次复用相同的代码,函数可以很好的帮助我们完成这一点。

函数的定义

使用关键字def来定义一个函数

我们来看一个简单的函数的例子

#下面这个函数接受一个字符串和一个字母作为参数,返回这个字符串中有这个字母的个数
def char_count(str,char):
    return str.count(char)

# 函数的调用
char_count('hello world','o')
>> 2

参数的传递

函数中参数顺序是定义时指定的,如果不按照顺序传入参数,必须使用参数名进行传参

def animal_feature(animal,feature):
    print(animal,'can',feature)

animal_feature('eagle','fly')#按顺序输入参数
>> eagle can fly
animal_feature(feature='fly',animal='eagle') #不按顺序输入参数
>> eagle can fly

默认参数值

函数的参数可以有默认的默认值,也就是说如果我们没有给指定参数变量任何值则会赋其默认值

def animal_feature(animal,feature='fly'):
    print(animal,'can',feature)

animal_feature('eagle')
>> eagle can fly

注意

  • 默认参数后面不能再有普通参数,比如f(a,b=10,c)就是错误的,应该写成f(a,c,b=90)

可变长的参数

可变参数的使用方法就是在参数列表前加*

比如我们要传入一些数字,返回这些数字的和

def num_total(*list1):
    num = 0
    for i in list1:
        num = num+i
    return num

num_total(1,2,3,4,5)
>> 15

num_total(1) #这里输入的参数个数是可变的
>> 1

函数中修改参数值

首先我们说明一下函数传值函数传引用

函数传值

函数参数传值的意思是函数调用过程中,在函数内部使用到的参数只是一个局部变量,在函数执行结束后就销毁了。不影响调用该函数的外部参数变量的值。

函数传引用

函数参数传引用的意思是传递给函数的参数就是外部使用的参数,函数执行过程中对该参数进行的任何修改都会保留,当函数调用结束后,这个参数被其他代码使用中都是函数修改过后的数据。

python中,参数是没有类型的,可以传递任何类型的对象作为参数,但是不同类型的参数在函数中的修改,表现也是不一样的。

  • 不可变对象 : 数值、字符串、元组等
  • 可变对象 : 列表、字典等
num = 1
list1 = [1]

def change_data(num,list1):
    num*2
    list1.extend([2,3])

num #num的值没有改变,因为num是不可变类型
>> 1

list1 #list1的值发生改变,因为list1是列表,是可变对象
>> [1,2,3] 

变量的作用域

关于变量的作用域不准备讲了,与c语言里类似,差不多就是除非是全局变量(global),否则函数里变量改变不影响函数外面变量的值

可以看一下下面这个例子,与上面函数修改参数值进行类比

num = 1
list1 = [1]

def change_data(num,list1):
    num = 2 #这里num是函数内部的局部变量
    list1 = [1,2,3]#这里list1是函数内部的局部变量,所以list1改变不改变外部变量的值

num 
>> 1

list1
>> [1]
  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: