Python函数

来源:互联网 发布:陕西师范远程网络教育 编辑:程序博客网 时间:2024/05/22 10:23

1、函数定义与调用

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

语法:

def functionname( parameters ):   "函数_文档字符串"   function_suite   return [expression]
例如:

# 定义函数def printme(str):    "打印任何传入的字符串"    print(str)    return# 调用函数printme("调用用户自定义函数")
输出结果:

调用用户自定义函数
2、参数传递

在Python中,类型属于对象,变量是没有类型的,她仅仅是一个对象的引用(一个指针)。例如:

a = [1, 2, 3]a = "Runoob"
以上代码中,[1,2,3]是List类型,"Runoob"是String类型,而变量a是没有类型,她仅仅是一个对象的引用(一个指针),可以是List类型对象,也可以指向String类型对象。

Python中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

在Python中,strings、tuples(元组)和numbers是不可更改的对象,而list和dict等则是可以修改的对象。

传不可变对象实例:

def ChangeInt(a):    a = 10b = 2ChangeInt(b)print(b)
输出结果:

2
实例中有int对象2,指向它的变量是b,在传递给ChangeInt函数时,按传值的方式复制了变量b,a和b都指向了同一个Int对象,在a=10时,则新生成一个int值对象10,并让a指向它。

传可变对象实例:

def ChangeList(list):    list.append(40)list = [10, 20, 30]print(list)ChangeList(list)print(list)
输出结果:

[10, 20, 30][10, 20, 30, 40]
3、参数

以下是调用函数时可使用的正式参数类型:必备参数、关键字参数、默认参数和不定长参数。

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。不然会出现语法错误。

例如:

def printme(str):    print(str)printme("aaa")
输出结果:

aaa
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值。例如:

def printme(name, age):    print(name)    print(age)printme(age=18, name="Diana")
输出结果:

Diana18
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。例如:

def printme(name, age = 0):    print(name)    print(age)printme(name="Jerry")
输出结果:

Jerry0
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。基本语法如下:

def functionname([formal_args,] *var_args_tuple ):   "函数_文档字符串"   function_suite   return [expression]
加了星号(*)的变量名会存放所有未命名的变量参数。例如:

def printme(arg1, *vartuple):    print(arg1)    for var in vartuple:        print(var)printme(10);printme(70, 60, 50);
输出结果:

10706050
4、匿名函数

Python使用lambda来创建匿名函数。

lambda函数的语法只包含一个语句,如下:

lambda [arg1 [,arg2,.....argn]]:expression
例如:

sum = lambda a, b: a + bprint(sum(10, 20))
输出结果:

30
5、return语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。例如:

def sum(a, b):    total = a + b    return totaltotal = sum(10, 20)print(total)
输出结果:

30
5、全局变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。

原创粉丝点击