【python】传入函数
函数定义规范:
def test(a):
"""
返回输入字符
:param a:
:return: a
"""
return a # 函数定义规范:
# def:定义函数的关键字
# test:函数名
# ():可定义形参
#""" """: 函数介绍
#return:定义返回值
函数参数
形参:在定义函数和函数体的时候使用的参数,目的是在函数调用的时候接受实参(形参和实参要一一对应)
实参:调用函数传给函数的参数,可以是常量、变量、表达式、函数
实参:大概分为位置参数、默认参数、关键字参数、参数组 调用函数实参使用标准: 形参和实参要一一对应;关键字参数一定要放在位置参数的后面;关键字参数调用,位置无需固定
def test(x,y):
print("y= %s"%y,end=",")
print("x= %s"%x) test(3,4) ##纯位置参数调用
#>>>y= 4,x= 3
test(y=5,x=3)##纯关键字参数调用,可以无序
#>>>y= 5,x= 3
test(3,y=5)
#>>>y= 5,x= 3
test(x=3,4) ###这样调用会报错,因为关键字参数一定要放在位置参数的后面
#>>>报错
test(3,x=4) ##这样也会报错,相当于位置参数给形参x赋值了,然后关键字参数又给x赋值了
#>>>TypeError: test() got multiple values for argument 'x'
形参使用标准: 必须是最先为位置参数,然后为默认参数,最后为参数组(先**args,再**kwargs)
def test(x,y,z=3,*args,**kwargs):
print("x= %s"%x,end=",")
print("y= %s"%y,end=",")
print("z= %s" %z) test(1,3,4)
#>>>x= 1,y= 3,z= 4
默认参数和参数组调用
默认参数:既可以用位置参数调用,也可以用关键组参数调用
*args:把N个位置参数转换为元组形式
有两种方法调用:1.接受一般位置参数
2.*和数组|元组|集合进行搭配
**kwargs:把N个关键字参数转换为字典形式
有两种方法调用:1.接受一般关键字参数
2.*和字典进行搭配
def test(x,y,z=3,*args,**kwargs):
print("x= %s"%x,end=",")
print("y= %s"%y,end=",")
print("z= %s" %z,end=",")
print(args,end=",")
print(kwargs) """
默认参数即可以用位置参数调用,也可以用关键组参数调用
"""
test(1,3,4)
#>>>xx= 1,y= 3,z= 4,(),{}
test(1,3,z=5)
#>>>x= 1,y= 3,z= 5,(),{} """
*args:把N个位置参数转换为元组形式
有两种方法调用:1.接受一般位置参数
2.*和数组|元组|集合进行搭配
"""
test(1,2,3,4,5,6)
#>>>x= 1,y= 2,z= 3,(4, 5, 6),{}
test(1,2,3,*(4,5,6))
#>>>x= 1,y= 2,z= 3,(4, 5, 6),{}
test(1,2,3,*[4,5,6])
#>>>x= 1,y= 2,z= 3,(4, 5, 6),{}
test(1,2,3,*{4,5,6})
#>>>x= 1,y= 2,z= 3,(4, 5, 6),{} """
*args:把N个关键字参数转换为字典形式
有两种方法调用:1.接受一般关键字参数
2.*和字典进行搭配
"""
test(1,2,3,m=4,n=5)
#>>>x= 1,y= 2,z= 3,(),{'m': 4, 'n': 5}
test(1,2,3,**{"m":4,"n":5})
#>>>x= 1,y= 2,z= 3,(),{'m': 4, 'n': 5}
关键字参数调用无序性:
def test(x,y,z=3,*args,**kwargs):
print("x= %s"%x,end=",")
print("y= %s"%y,end=",")
print("z= %s" %z,end=",")
print(args,end=",")
print(kwargs) test(1,2,m=4,n=5,z=6)
#>>>x= 1,y= 2,z= 6,(),{'m': 4, 'n': 5}
返回值:
返回值数为0时,返回None;
返回值数为1时,返回object;
返回值数>1时,返回元组
def test1(x):
pass def test2(x):
return x def test3(x,y,z):
return x,y,z print(test1(1))
#>>>None
print(test2(1))
#>>>1
print(test3(True,"hello",3))
#>>>(True, 'hello', 3)
高阶函数: 一个函数可以接受另一个函数作为参数。
a:把一个函数名当做实参传给另一个函数
b:返回值中包含函数名
def add(x, y, f):
return f(x) + f(y) ##理解f为函数名
#当我们调用add(-5, 6, abs)时,参数x,y和f分别接收-5,6和abs print(add(-5,6,abs)) ##调用时直接使用函数名调用
#>>>11
递归函数:
递归函数特点:
1.必须有一个明确的结束条件
2.每次进入更深的递归时,问题规模相比上次递归应有所减少
3.递归效率不高
def test(n):
if n>0:
n = n // 2
print(n)
return test(n)
return "over" print(test(10))
【python】传入函数的更多相关文章
- Python的函数式编程-传入函数、排序算法、函数作为返回值、匿名函数、偏函数、装饰器
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- python的函数
函数一词起源于数学,但是在编程中的函数和数学中的有很大不同.编程中的函数式组织好的,可重复使用的,用于实现单一功能或相关联功能的代码块. 我们在学习过程中已经使用过一些python内建的函数,如pri ...
- 【Python】函数基础简介
一.函数 1. 简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2. 组成 函数代码块以 def 关键词开头,后接函数名和圆括号( ...
- Python基础-函数篇
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 函数与函数式编程 1.面向对象: 华山派-- ...
- Python基础篇【第2篇】: Python自定义函数
Python函数 1. 函数定义 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print ...
- python基础——函数的参数
python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...
- python map函数
map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如,对于li ...
- python匿名函数(lambda)
简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方 ...
- python中函数的总结之三
1. 可变长参数 在函数中可变长参数分为两种:一种是非关键字参数,表示为元组:一种是关键字参数,表示为字典. 具体看下面的例子代码,相当于单元测试: #!/usr/bin/env python #'t ...
- Python之函数进阶
本节内容 上一篇中介绍了Python中函数的定义.函数的调用.函数的参数以及变量的作用域等内容,现在来说下函数的一些高级特性: 递归函数 嵌套函数与闭包 匿名函数 高阶函数 内置函数 总结 一.递归函 ...
随机推荐
- AOP设计思想_开发流程
程序员一直在努力做一件事请,写更少的代码,做更多的事情,提高开发效率 在一个开发团队里面,一个人最多只做一件事情,绝对不会说,刚接手做了没多久的任务,上头又交给你另一项任务,绝对不会有的 下面,梦逸来 ...
- js 原生对象排序
//对象属性排序 function compare(propertyName) { return function (object1, object2) { var value1 = object1[ ...
- WPF:带复选框CheckBox的树TreeView
最近要用WPF写一个树,同事给了我一个Demo(不知道是从哪里找来的),我基本上就是参照了这个Demo. 先放一下效果图(3棵树): 这个树索要满足的条件是: 父节点.Checked=true时,子节 ...
- C#窗体自定义控件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...
- escape()、encodeURI()、encodeURIComponent()区别详解--zt
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...
- shell脚本参数
举例说:脚本名称叫test.sh 入参三个: 1 2 3运行test.sh 1 2 3后$*为"1 2 3"(一起被引号包住)$@为"1" "2&qu ...
- AIX修改用户密码登录不成功案例分享
背景:使用passwd XXXX fcesjaif,修改新密码仍然提示密码不正确.拒绝登录 a. 使用命令lsuser -f XXXX |grep -i successful 查看不成功的次数 chu ...
- 解决html中 在不同浏览器中占位大小不统一的问题
直接在html文档中使用 来表示空格,在不同浏览器中的占位大小是不一样的. 为什么呢,因为不同浏览器默认的字体是不一样的,不同字体下的空格表示 占位大小不一致. 这就好办了嘛,我们对 指定使用同样的字 ...
- 支持Android iOS,firefox(其它未测)的图片上传客户端预览、缩放、裁切。
var version = '007'; var host = window.location.host; function $$(id){return document.getElementById ...
- 实现用CSS切割图片的方法
切割图片这里不是真正的切割,只是用CSS取图片中的一部分而已.这样做的好处就是减少了打开网页时请求图片的次数.主要有两种方式,一是做为某一元素的背景图片,二是用img元素的属性. 方法一: 用CSS中 ...