函数参数、作用域、高阶函数、递归函数、高阶函数
时间:2019-09-26
本文章向大家介绍函数参数、作用域、高阶函数、递归函数、高阶函数,主要包括函数参数、作用域、高阶函数、递归函数、高阶函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#-----必须参数、关键字参数、默认参数-----
1 def user_info(name,age,sex="male"): 2 print("Nmae: %s"% name) 3 print("Age: %d" % age) 4 print("Sex:%s" % sex) 5 6 #必须参数('dream',18) 7 user_info('dream',18) #Nmae: dream Age: 18 Sex:male 8 #关键字参数(age=10,name='rise') 9 user_info(age=10,name='rise') #Nmae: rise Age: 10 Sex:male 10 #默认参数(sex="male") 11 user_info("xiaohong",12,"madam") #Nmae: xiaohong Age: 12 Sex:madam
#-----sum() 方法对系列进行求和计算-----
语法 sum(iterable[, start])
参数
1、iterable -- 可迭代对象,如:列表、元组、集合。
2、start -- 指定相加的参数,如果没有设置这个值,默认为0。
#-----不定长参数使用(*args,**kwargs)-----
#-----加法器
1 def add(*args): 2 print(args,type(args)) #((1, 2, 3, 4, 5) <class 'tuple'> #args是可迭代对象(元组) 3 sum1 = sum(args) 4 print(sum1) 5 add(1,2,3,4,5) 6 7 def print_info(name,age,**kwargs): 8 print("Nmae: %s"% name) 9 print("Age: %d" % age) 10 for i in kwargs: 11 print("%s:%s"% (i,kwargs[i])) 12 13 print_info("xiaohong",12,sex="madam",job="IT") 14 15 #结论:关于不定长参数位置:*args放在左边,**kargs 参数放在右边 16 17 def print_info(name,age,sex = "male",*args,**kwargs): 18 print("Nmae: %s"% name) 19 print("Age: %d" % age) 20 print("Sex:%s" % sex) 21 for i in args: 22 print(i) 23 for j in kwargs: 24 print("%s:%s"% (j,kwargs[j])) 25 26 print_info("xiaohong",12,"madam",1,2,job="IT",learn="python")
#-----return-----
return作用
1、结束函数
2、返回某个对象
#-----注意问题:
1、函数里如果没有return,会默认返回一个None
2、如果return 多个对象,那么python会帮我们多个对象封装为成一个元组(返回一个对象)
1 def f(): 2 return 1 3 print(f()) #return 返回1(return返回给调用者) 4 5 def add(*args): 6 print(args,type(args)) #((1, 2, 3, 4, 5) <class 'tuple'> #args是可迭代对象(元组) 7 return sum(args) 8 print(add(1,2,3,4,5))
#-----作用域
#作用域:
1、L: local,局部作用域,即函数中定义的变量
2、E: enclosing,嵌套父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局作用域。
3、G: globa 全局变量,模块级别定义的变量。
4、B: built-in 系统固定模块里面的变量
作用域优先级:局部作用域>外部作用域>当前模块中的全局作用域>python内置作用域
1 count = 10 2 def outer(): 3 4 # print(count) #local variable 'count' referenced before assignment 5 global count #全局变量使用global 关键字 6 print(count) #10 7 count = 5 8 print(count) #5 9 outer() 10 11 def outer(): 12 count = 10 13 def inner(): 14 nonlocal count #嵌套作用域变量使用nonlocal 关键字 15 print(count) #10 16 count = 20 17 print(count) #20 18 inner() 19 outer()
#-----高阶函数-----
#1、函数名可以进行赋值
#2、函数名可以作为参数,函数名还可以做为函数的返回值
1 def f(n): 2 return n*n 3 def foo(a,b,f): 4 return f(a)+f(b) 5 print(foo(2,3,f)) #13 6 7 def a(): 8 def b(): 9 return 6 10 return b 11 ret = a() 12 print(ret()) # 6
#-----递归函数-----
#定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身(本身),这个函数就是递归。
#-----阶乘实例
1 def num1(n): 2 ret = 1 3 for i in range(1,n+1): 4 ret = ret * i 5 return ret 6 print(num1(4)) 7 8 def num2(n): 9 if n == 1: 10 return 1 11 return n*num2(n-1) 12 print(num2(4))
#-----斐波那契数列1 1 2 3 5 8 13
1 def fibo(n): 2 if n <= 1: 3 return n 4 return fibo(n-1)+fibo(n-2) 5 6 print(fibo(8)) 7 8 def fi(n): 9 before = 0 10 after = 1 11 for i in range(n-1): 12 before,after = after,before+after 13 return after 14 print(fi(6))
#-----内置函数-----
#-----filter过滤器
1 str = ['a','b','c'] 2 def fun1(s): 3 if s != 'a': 4 return s 5 6 ret = filter(fun1,str) #filter迭代器对象 7 print(list(ret)) #['b', 'c']
#-----map处理序列(拼接、修剪、删除)
1 str = ['a','b','c'] 2 def fun1(s): 3 if s != 'a': 4 return s+'alvin' 5 ret = map(fun1,str) # 迭代器对象 6 print(list(ret)) #[None, 'balvin', 'calvin']
#-----reduce的结果就是一个值
1 from functools import reduce 2 def add1(x,y): 3 return x + y 4 5 print(reduce(add1,range(1,101))) #36 (1+2+3+4+5....+8+9)
#-----lambda匿名函数
1 add = lambda a,b : a+b 2 print(add(2,3)) #5
原文地址:https://www.cnblogs.com/rise-home/p/11592834.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Django-admin配置和显示图标
- redis学习(八)
- 【剑指Offer】打印从1到最大的n位数
- 面试题-List之ArrayList、Vector、SynchronizedList、CopyOnWriteArrayList
- 面试题-JAVA设计模式之单例模式的5种实现方式
- 面试题-JAVA中的深拷贝、浅拷贝原理及实现
- Cross-Origin Resource Sharing (CORS)-跨域
- 多线程技术-CountDownLatch在业务中实践
- Mybatis源码阅读-准备环境搭建
- 【SpringBoot WebFlux 系列】WebFlux 之 Path 参数解析与 url 映射
- Oracle的expdp和impdp的使用方法
- python中的密度图与柱状图
- 单细胞数据(scRNAseq)可以做GSEA吗?
- mybatis-plus的collection、association 标签传递多参数
- 100 的阶乘末尾有多少个0?