Python学习笔记(六)——函数
来源:互联网 发布:鼎尖软件安卓版 编辑:程序博客网 时间:2024/05/29 12:14
函数定义语法:
def functionname( parameters ): "函数_文档字符串" function_suite return [expression]
参数传递
可变&不可变参数
在python中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
python 中一切都是对象,严格意义我们不能说是C++中的值传递还是引用传递,我们应该说传不可变对象和传可变对象。
def changeme(mylist): mylist.append([1,2,3,4]); print "函数内取值: ", mylist return# 调用changeme函数mylist = [10,20,30];changeme(mylist);print "函数外取值: ", mylistdef changeNum(b): b+=1a=1changeNum(a)print a
输出结果如下:
函数内取值: [10, 20, 30, [1, 2, 3, 4]]函数外取值: [10, 20, 30, [1, 2, 3, 4]]1
参数类型
以下是调用函数时可使用的正式参数类型:
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def print_name(first_name, last_name): print "My name is ", first_name, " ", last_nameprint_name(last_name="Ming", first_name="Xiao")
默认参数
def printinfo( name, age = 35 ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return;#调用printinfo函数printinfo( age=50, name="miki" );printinfo( name="miki" );
输出结果:
Name: mikiAge 50Name: mikiAge 35
不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。加星号(*)的变量名会存放所有未命名的变量参数。其实就是用带星号(*)变量以列表形式把不定长的参数保存起来。
# 可写函数说明def printinfo( arg1, *vartuple ): "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var return;# 调用printinfo 函数printinfo( 10 );printinfo( 70, 60, 50 );
输出结果:
输出:10输出:706050
不定长关键字参数
当参数前加两个星号(**)时,该参数为不定长关键字参数,即支持任意多的关键字参数。
def accept(**kwargs): for keyword, value in kwargs.items(): print "%s => %r" % (keyword, value)accept(foo='bar', spam='eggs')
输出:
foo => 'bar'spam => 'eggs'
匿名函数
python 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法:
lambda [arg1 [,arg2,.....argn]]:expression
如下实例:
# 两参数求和sum = lambda arg1, arg2: arg1 + arg2;#调用sum函数print "相加后的值为 : ", sum( 10, 20 )
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
关键字global能实现在函数内部定义全局变量或改变全局变量的值。
globvar = 0def set_globvar_to_one(): global globvar # 使用 global 声明全局变量 globvar = 1def print_globvar(): print(globvar) # 没有使用 globalset_globvar_to_one()print globvar # 输出 1print_globvar() # 输出 1,函数内的 globvar 已经是全局变量
Function与Method的区别
https://docs.python.org/3/glossary.html
What’s function?
A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body.
What’s method?
A function which is defined inside a class body. If called as an attribute of an instance of that class, the method will get the instance object as its first argument (which is usually called self).
简单来说就是:方法是定义在类里面的函数。
- Python学习笔记(六)— 函数
- Python学习笔记(六)——Python 函数
- Python学习笔记(六)——函数
- Python学习笔记之六——函数
- [python]python学习笔记(六)——界面编程
- 简明python教程学习笔记(六)-函数
- python学习笔记(六)函数返回值
- Python学习教程(六)——抽象之函数
- Python学习(六)---函数
- Python学习笔记(六)——一些语句
- Python学习笔记(六)——面向对象编程
- Python学习笔记(六)—— 序列运算
- 【Swift】学习笔记(六)——函数
- python学习笔记(六)
- python 学习笔记(六)
- Python学习笔记(六)
- Python学习笔记(六)
- python学习笔记(六)
- Python练习07-09
- 实训第十一天
- d3js-v4-map-1最简单的canvas地图
- [LeetCode] 300.Longest Increasing Subsequence
- final、finally和finalize的区别是什么?
- Python学习笔记(六)——函数
- hadoop 伪分布式搭建
- 2017算法课.作业(8.19)
- [高频] 四.基础算法和数据结构II
- C语言运算符优先级列表
- Python学习笔记(七)——模块
- struts2
- 欢迎使用CSDN-markdown编辑器
- 端口通信