python---函数
来源:互联网 发布:淘宝怎样取消货到付款 编辑:程序博客网 时间:2024/05/29 17:39
##################################################
###################### 函数 #######################
##################################################
1.函数的定义
def关键字,依次写出函数名、括号、括号中的参数和冒号
在缩进块中编写函数体,函数的返回值用 return 语句返回。
1)函数在执行过程中一旦遇到return,函数就执行完毕,并将结果返回。
def hello():
return 'hello'
print 'fentiao'
print hello()
print 'fentiao'
return 'hello'
print hello()
结果:fentiao
hello
2)函数在执行过程中没有遇到return时,返回值None。
def hello():
print 'fentiao'
print hello()
结果:fentiao
None
3)如果要定义一个什么也不做的空函数时,可以用pass语句,作为一个占位符,让代码先运行起来。
def hello():
return 'hello'
def world():
pass
print hello()
结果:hello
• abs()
• cmp()
• 数据类型转换函数:int(), float(), str(),unicode(),bool()
In [1]: abs(-10)
Out[1]: 10
In [2]: cmp(1,3)
Out[2]: -1
In [3]: cmp(7,3)
Out[3]: 1
In [4]: type(123)
Out[4]: int
In [5]: str(123)
Out[5]: '123'
给这个函数起了一个“别名”:函数名赋给一个变量
cmp(1,10)
Out[2]: -1
a = cmp
a(1,10)
Out[4]: -1
def my_abs(x):
return abs(x)
print my_abs()
结果:
Traceback (most recent call last):
File "/home/kiosk/PycharmProjects/untitled/hello.py", line 17, in <module>
print my_abs()
TypeError: my_abs() takes exactly 1 argument (0 given)
2)如果参数类型不对,Python 解释器就无法帮我们检查。
3)数据类型检查可以用内置函数 isinstance 实现
def my_abs(x):
if not isinstance(x,(int,float)):
print '请输入整型或浮点型!'
return abs(x)
print my_abs(-10)
结果:10
定义一个函数func,传入两个数字,返回两个数字的平均值与最大值。
1)函数返回多个值,实质上是返回一个元组tuple,返回时元组可以省略括号
def func(x,y):
if not isinstance(x,int) or not isinstance(y,int):
print 'Error Type'
avg = sum((x,y))/2
maxnum = max(x,y)
return (avg,maxnum)
t = func(2,10)
print type(t)
结果:<type 'tuple'>
2)函数调用接收返回值时,按照位置赋值给变量
def func(x,y):
if not isinstance(x,int) or not isinstance(y,int):
print 'Error Type'
avg = sum((x,y))/2
maxnum = max(x,y)
return (avg,maxnum)
myavg, mymax = func(2,10)
print myavg, mymax
结果:6.0 10
默认参数可以降低调用函数的难度。
思考下:定义一函数,计算x值的n次方。那如果计算x平方时只需要传入x值时怎么解决?
def power(x,n=2):
return x**n
print power(2,3)
print power(3)
结果:8
9
• 必选参数在前,默认参数在后
def enroll(name, age=22, myclass="Math"):
print 'name:' + name
print 'age:%d' % age
print 'class:' + myclass
enroll('Tom')
enroll('Mary', 18)
enroll('Jack', 20, 'English')
结果:name:Tom
age:22
class:Math
name:Mary
age:18
class:Math
name:Jack
age:20
class:English
def fun(li = []):
li.append('END')
return li
print fun([1,2,3])
print fun()
print fun()
结果:[1, 2, 3, 'END']
['END']
['END', 'END'] ##由于list是可变类型,fun函数执行多次时会将上次执行结果累加
2)可变参数(位置参数)
可变参数就是传入的参数个数是可变的,可以是 1 个、2 个到任意个,还可以是 0 个。
定义函数时,形参可以为*args,使函数可以接收多个参数,接收的数据类型为元组。
如果已经有一个 list 或者 tuple,要调用一个可变参数怎么办?
- Python 允许你在 list 或 tuple 前面加一个 * 号;
- 把 list 或 tuple 的元素变成可变参数传进去;
def fun(*args):
print type(args)
return max(args),min(args)
li = 1,42,3,14,58,6
print fun(*li)
结果:<type 'tuple'>
(58, 1)
3)关键字参数
• 关键字参数允许你传入 0 个或任意个含参数名的参数;
• 这些关键字参数在函数内部自动组装为一个 dict;
• 关键字参数用**kwargs
def enroll(**kwargs):
for k, w in kwargs.items():
print '%s : %s' % (k, w)
dic = {'myclass':'linux',"gender":'male'}
enroll(**dic)
结果:myclass : linux
gender : male
4)参数组合
•参数组合是指可以必选参数、 默认参数、 可变参数和关键字参数一起使用。
•参数定义的顺序必须是:必选参数 > 默认参数 > 可变参数 > 关键字参数
def enroll(name, age=22, **kwargs):
print 'name:' + name
print 'age:%d' % age
for k, w in kwargs.items():
print '%s : %s' % (k, w)
dic = {'myclass':'linux',"gender":'male'}
enroll('fentiao', **dic)
结果:name:fentiao
age:22
myclass : linux
gender : male
• 默认参数:默认参数一定要用不可变对象
• 可变参数:*args 是可变参数,args 接收的是一个 tuple
• 关键字参数:**kw 是关键字参数,kw 接收的是一个dict
• 对于任意函数,都可以通过类似 func(*args, **kw) 的形式调用它
8.变量的作用域
• 局部变量:只能在函数内部使用的变量
• 全局变量:在整个程序中使用的变量
• global关键字:强制将局部变量转换为全局变量
b = 2 # 全局变量,在整个代码中生效
def a():
b = 1 # 局部变量,只在函数内生效
print b
a()
print b
结果:1
2
b = 2
def a():
global b # global将局部变量转换为全局变量
b = 1
print b
a()
print b
结果:1
###################### 函数 #######################
##################################################
1.函数的定义
def关键字,依次写出函数名、括号、括号中的参数和冒号
在缩进块中编写函数体,函数的返回值用 return 语句返回。
1)函数在执行过程中一旦遇到return,函数就执行完毕,并将结果返回。
def hello():
return 'hello'
print 'fentiao'
print hello()
结果:hello
print 'fentiao'
return 'hello'
print hello()
结果:fentiao
hello
2)函数在执行过程中没有遇到return时,返回值None。
def hello():
print 'fentiao'
print hello()
结果:fentiao
None
3)如果要定义一个什么也不做的空函数时,可以用pass语句,作为一个占位符,让代码先运行起来。
def hello():
return 'hello'
def world():
pass
print hello()
结果:hello
2.函数的调用
Python 内置了很多有用的函数,我们可以直接调用:• abs()
• cmp()
• 数据类型转换函数:int(), float(), str(),unicode(),bool()
In [1]: abs(-10)
Out[1]: 10
In [2]: cmp(1,3)
Out[2]: -1
In [3]: cmp(7,3)
Out[3]: 1
In [4]: type(123)
Out[4]: int
In [5]: str(123)
Out[5]: '123'
3.理解函数名
函数名与变量名类似,其实就是指向一个函数对象的引用;给这个函数起了一个“别名”:函数名赋给一个变量
cmp(1,10)
Out[2]: -1
a = cmp
a(1,10)
Out[4]: -1
4.参数检查
1)调用函数时,如果参数个数不对,Python 解释器会自动检查出来,并抛出 TypeError;def my_abs(x):
return abs(x)
print my_abs()
结果:
Traceback (most recent call last):
File "/home/kiosk/PycharmProjects/untitled/hello.py", line 17, in <module>
print my_abs()
TypeError: my_abs() takes exactly 1 argument (0 given)
2)如果参数类型不对,Python 解释器就无法帮我们检查。
3)数据类型检查可以用内置函数 isinstance 实现
def my_abs(x):
if not isinstance(x,(int,float)):
print '请输入整型或浮点型!'
return abs(x)
print my_abs(-10)
结果:10
5.函数返回值
函数可以返回多个值吗?那编写python程序,思考下:定义一个函数func,传入两个数字,返回两个数字的平均值与最大值。
1)函数返回多个值,实质上是返回一个元组tuple,返回时元组可以省略括号
def func(x,y):
if not isinstance(x,int) or not isinstance(y,int):
print 'Error Type'
avg = sum((x,y))/2
maxnum = max(x,y)
return (avg,maxnum)
t = func(2,10)
print type(t)
结果:<type 'tuple'>
2)函数调用接收返回值时,按照位置赋值给变量
def func(x,y):
if not isinstance(x,int) or not isinstance(y,int):
print 'Error Type'
avg = sum((x,y))/2
maxnum = max(x,y)
return (avg,maxnum)
myavg, mymax = func(2,10)
print myavg, mymax
结果:6.0 10
6.函数参数
1)默认参数默认参数可以降低调用函数的难度。
思考下:定义一函数,计算x值的n次方。那如果计算x平方时只需要传入x值时怎么解决?
def power(x,n=2):
return x**n
print power(2,3)
print power(3)
结果:8
9
默认参数注意事项:
• 有多个参数时,变化大放前面,变化小的放后面;• 必选参数在前,默认参数在后
def enroll(name, age=22, myclass="Math"):
print 'name:' + name
print 'age:%d' % age
print 'class:' + myclass
enroll('Tom')
enroll('Mary', 18)
enroll('Jack', 20, 'English')
结果:name:Tom
age:22
class:Math
name:Mary
age:18
class:Math
name:Jack
age:20
class:English
默认函数容易出错点:默认参数必须是不可变数据类型
试一试:先定义一个函数,传入一个 list,添加一个END 再返回.def fun(li = []):
li.append('END')
return li
print fun([1,2,3])
print fun()
print fun()
结果:[1, 2, 3, 'END']
['END']
['END', 'END'] ##由于list是可变类型,fun函数执行多次时会将上次执行结果累加
2)可变参数(位置参数)
可变参数就是传入的参数个数是可变的,可以是 1 个、2 个到任意个,还可以是 0 个。
定义函数时,形参可以为*args,使函数可以接收多个参数,接收的数据类型为元组。
如果已经有一个 list 或者 tuple,要调用一个可变参数怎么办?
- Python 允许你在 list 或 tuple 前面加一个 * 号;
- 把 list 或 tuple 的元素变成可变参数传进去;
def fun(*args):
print type(args)
return max(args),min(args)
li = 1,42,3,14,58,6
print fun(*li)
结果:<type 'tuple'>
(58, 1)
3)关键字参数
• 关键字参数允许你传入 0 个或任意个含参数名的参数;
• 这些关键字参数在函数内部自动组装为一个 dict;
• 关键字参数用**kwargs
def enroll(**kwargs):
for k, w in kwargs.items():
print '%s : %s' % (k, w)
dic = {'myclass':'linux',"gender":'male'}
enroll(**dic)
结果:myclass : linux
gender : male
4)参数组合
•参数组合是指可以必选参数、 默认参数、 可变参数和关键字参数一起使用。
•参数定义的顺序必须是:必选参数 > 默认参数 > 可变参数 > 关键字参数
def enroll(name, age=22, **kwargs):
print 'name:' + name
print 'age:%d' % age
for k, w in kwargs.items():
print '%s : %s' % (k, w)
dic = {'myclass':'linux',"gender":'male'}
enroll('fentiao', **dic)
结果:name:fentiao
age:22
myclass : linux
gender : male
7.参数总结
• 必选参数• 默认参数:默认参数一定要用不可变对象
• 可变参数:*args 是可变参数,args 接收的是一个 tuple
• 关键字参数:**kw 是关键字参数,kw 接收的是一个dict
• 对于任意函数,都可以通过类似 func(*args, **kw) 的形式调用它
8.变量的作用域
• 局部变量:只能在函数内部使用的变量
• 全局变量:在整个程序中使用的变量
• global关键字:强制将局部变量转换为全局变量
b = 2 # 全局变量,在整个代码中生效
def a():
b = 1 # 局部变量,只在函数内生效
print b
a()
print b
结果:1
2
b = 2
def a():
global b # global将局部变量转换为全局变量
b = 1
print b
a()
print b
结果:1
1
阅读全文
0 0
- python函数
- python 函数
- python 函数
- Python 函数
- python 函数
- PYTHON函数
- python 函数
- Python函数
- python 函数
- Python 函数
- Python 函数
- Python 函数
- python函数
- python函数
- python 函数
- Python 函数
- Python函数
- Python函数
- pandas 中有关agg函数和apply函数的区别
- 三种循环语句的定义和练习
- 牛客《剑指Offer》 变态跳台阶
- WEEX添加HTML5配置
- HttpClient发送HTTP请求详解
- python---函数
- 用spring的beans配置mysql数据库
- 加入Java大家族
- springMVC 上传压缩包文件、解压
- realloc函数用法
- 小白的前端学习日记HTML/CSS之---九宫格
- sql语句连接查询.
- node+ejs【封装ejs模板中直接调用js方法】
- sql语句嵌套查询.