python学习11函数
函数:
1.定义:指通过专门的代码组织,用来实现特定的功能的代码段,具有相对独立性,可供其他代码重复调用
2.语法:
def 函数名([参数]):
函数体
[return 返回值]
3.函数名命名规则:
(1)符合基本的标识符命名原则;
(2)不能与现有内置函数名发生冲突
(3)名称应该准确的表达函数的功能
4.不带参数的函数————求因数
def factor_no_para():
for i in range(1,11):
if 10%i==0:
print(i,end=" ")
return None
factor_no_para()
5.带参数的函数格式————求因数2.0
在def 函数名(参数)这里面的参数叫形式参数,给自定义函数传的值(参),叫实际参数
def factor_no_para2(num):
for i in range(1,num+1):
if num%i==0:
print(i,end=' ')
return None
factor_no_para2(num=20)
6.带返回值的函数
def factor_no_para3(num):
flag = 0 # 标记符,如果这个数有除了1和它本身以外的因数,则标记置为1
for i in range(2,num):
if num%i==0:
print(i,end=' ')
flag=1
return flag
7.函数模块化(把函数放到模块中)
(1)函数模块(Module)文件的建立
建立一个空白的代码文件,如test_module.py,编写调试自己的自定义函数代码
(2)调用函数模块
通过import语句导入整个函数模块——导入后,通过模块名.函数名的连接方式调用函数
import test_module
print(test_module.find_factor(10))
还可以只调用指定函数:from 模块名 import 函数名1,函数名2...
from test_module import find_factor
print(find_factor(10))
还可以导入所有函数:from 模块名 import *
from test_module import *
print(find_factor(10))
别名:若模块名,函数名过长,可以通过as语句定义别名的方式解决:模块名【函数名】 as 别名
from test_module import find_factor as ff
print(ff(10))
import test_module as te
print(te.find_factor(10))
5.参数
notes:1.不定长参数:(1)传递任意数量的参数值:*
(2)传递任意数量的键值对:**
2.参数可以传递元组,列表和字典
'''
def exam(name,score):
print('name:'+name+',score:'+str(score))
exam('liu',100)
exam(name='wang',score=100)
exam(score=90,name='ma')
exam('li',score=50)
def fruit(name,**attribute):
print('name:'+name)
return attribute
print(fruit('watermelon',color='green',shape='圆形',taste='sweet')) #传递的是键值对
'''
结果为:name:watermelon
{'color': 'green', 'shape': '圆形', 'taste': 'sweet'}
'''
'''
6.作用域
(1)全局变量:从赋值开始,后续代码都可以访问该变量
(2)局部变量:只能在被定义的函数或者类内部被访问的变量
7.关键字——global
全局变量在函数中不能对其进行修改,如需修改,要先用global关键字声明
'''
i=10
def sum1():
global i #声明i为全局变量
i=i+5
print(i)
sum1()
print(i)
'''
8.闭包
是介于全局变量和局部变量之间的一种特殊变量。
'''
j=5
def sum2():
k=2 #闭包变量k
def sum3():
i=k+j
return i
return sum3()
print(sum2())
'''
9.nonlocal关键字
外部函数定义一个变量,内部函数去调用,这个变量就叫闭包变量,如果内部函数想修改这个闭包变量,需要用nonlocal关键字声明。
10.匿名函数
lambda
11.递归函数
'''
a=lambda x,y:x*y
m=a(2,3)
print(m)