函数
引子:
求1-15的和;
求23-26的和;
求55-68的和。
def sum(a,b):
s=0
for i in range(a,b+1):
s+=i
return s
print(sum(23,26))
程序而言:函数就是对程序逻辑进行结构化或者过程化的一种编程方法。
bulit-in function 内置函数 BIF
函数的定义
声明函数的一般形式:
def function_name(arg1,arg2,...argn):
```statements```
func_statements
return Value
def add(x,y):
'''求和'''
return x+y
print(add.__doc__) #求和 返回函数说明
函数参数种类
形参和实参
- 形参
- 只有在调用时才分配内存单元,调用结束后释放所分配的内存单元。因此,形参只在函数内部有效,函数调用结束返回主调用函数后则不能在使用该形参变量。
- 实参
- 实参是一个确定的值,能够传递给形参。
- 作为位置参数或者关键字参数传递。
- 实参是一个确定的值,能够传递给形参。
默认值参数
关键字参数
不定参数
在Python中不定参数主要是指args 和**kwargs两个魔法变量。
他们俩主要用于函数定义,我们可以将不定数量的参数传递给一个函数。
- *args用来接受任意非键值对
def uncertain_para(para,para2,*args):
print('普通位置参数',para,para2)
print('不定参数',args)
print(type(args))
uncertain_para(1,2,3,4,'a','b')
uncertain_para([1,2,3],'ab','cd','ef')
#普通位置参数 1 2
#不定参数 (3, 4, 'a', 'b')
#<class 'tuple'>
#普通位置参数 [1, 2, 3] ab
#不定参数 ('cd', 'ef')
#<class 'tuple'>
- **kwargs用来接受不定长度的
def un_para_key(**kwargs):
print(kwargs)
print(type(kwargs))
un_para_key(a=1,b=2,c=3)
#{'a': 1, 'b': 2, 'c': 3}
#<class 'dict'>
def un_para_key(x,y,*z,**kwargs):
print(x,y,z)
print(kwargs)
print(type(kwargs))
un_para_key(1,2,3,4,5,'a','b',a=1,b=2,c=3)
#1 2 (3, 4, 5, 'a', 'b')
#{'a': 1, 'b': 2, 'c': 3}
#<class 'dict'>
练习:
def func1(p):
digit_number = 0
space_number = 0
alpha_number = 0
else_number = 0
for i in p:
if i.isdigit():
digit_number += 1
elif i.isspace():
space_number += 1
elif i.isalpha():
alpha_number += 1
else:
else_number += 1
return (digit_number,space_number,alpha_number,else_number)
print(func1("asd8uas d7asy as8yzx##@"))
函数属性
内嵌函数
作用域
bar()整个函数都处于外部foo()函数的作用域里(foo()是我们可以从外部访问的一个对象区域)。除了在foo()内部,其他地方无法对bar()进行调用。
作用域的类型
Python中使用一个变量时并不需要预先声明它。但是在真正使用的时候,他必须绑定到某个内存对象(被定义,赋值)。这种变量名的绑定将在当前作用域引入新的变量,同时,屏蔽外层作用域中的相同变量
a=6688
def foo():
# a=666
print(a) #报错
a=888
print(a)
foo()