函数的定义主要有如下要点:


  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。

以上要点中,比较重要有参数和返回值:

 

3.def  函数

写函数的时候,要尽量以功能为导向,结果最好不要直接在函数中打印

简单的函数
def my_len(l):#函数名的定义
count=0
for i in l:
count+=1
return count #函数的返回值
print(my_len([1,2,2,22,4]))#函数的调用和返回值的接受

返回值:

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者

#没有返回值:

  不写return  或和他等价的 return None

  只写一个 return  == return None

  return的作用,:1.返回一个值,2.终止一个循环

返回一个值:可以返回任意数据类型,返回什么  就接受什么

返回多个值:用一个变量接收返回值,接收到的是一个元祖

      返回值有多个变量接收,那么返回值的数量和接受变量的个数完全一致。

返回值要注意的点:

li=[1,2,34,]
def func(*args):
print(args)
return args*2
print(func(li)) 得到的结果:
([1, 2, 34],) 可以看到参数传到函数内部是以元祖然后把参数单独当作元祖的一个值 以元祖形式存在的
值存在的
([1, 2, 34], [1, 2, 34]) 对函数进行*2的操作返回的是一个元祖 含有一个两个传入的数据

打散操作

li=[1,2,34,]
def func(*args):
print(args)
return args*2
a=func(*li) 这里是打散操作,将一个列表打散数据一一放到函数中去 l2=[5,5,6]
b,c,d,e,f,g=func(*l2)
将函数打散放到里边
#可以看到在函数内部每个数据都是以单独一个元素形式存在在元祖中的
(1, 2, 34)
#返回的值也是作为单独一个元素放到元祖中的
  print(a)   得到的值是 (1, 2, 34, 1, 2, 34)
  
  print(b)  得到的值是   5
 返回值的接收 
一个变量接收多个返回值就会将数据整体放到元祖中去(1, 2, 34, 1, 2, 34)
 多个变量接收多个返回值   则以 数据的形式接收

打散在关键字参数中的应用

d1={'name':'alex','age':18}
def func(**kwargs,):
print(kwargs)
func(**d1) #可以看到传字典形式的关键字参数的时候需在前边加上 ** 字典打散操作
# **打散操作 不然会被当作位置参数来接受 #打印的结果是
#{'name': 'alex', 'age': 18}
#或者这样传位置参数
func(name='aaa')

参数

函数的有三中不同的参数:

  • 普通参数
  • 默认参数
  • 动态参数

普通参数:

普通参数的传递并没有个数和数据类型的限制,可以传递字符串,数字,列表和字典。也不限定个数,需要注意的是:函数需要多少参数,调用的时候就要按照它定义时的顺序和数据类型传递过去。

形参:函数中的参数
实参:传递参数/传参,实际参数/实参 l=[1,2,2,22,4]
def my_len(l):  #参数:接收参数,形参,形式参数。
count=0
for i in l:
count+=1
return count
l=[1,2,2,22,4]#参数:传递参数/传参,实际参数/实参 l=[1,2,2,22,4]
print(my_len(l))
l2='金老板 is somebody'
print(my_len(l2))

传参可以是任意的数据类型,并且传递什么接受什么

站在传递参数的角度上看问题:一共有有两种传递参数。

        第一种:按照位置穿参数(

        第二种:按照关键字穿参数

def f1(arg1,arg2):#站在接受,形参的角度上:位置参数
print(arg1)
print(arg2)
f1('你好啊',arg2=[1,2,3,4,5])
f1(arg2='你好啊',[1,2,3,4,5])#这样会报错无法执行
f1(arg2='你好啊',arg1=[1,2,3,4,5])#这样才能正常执行
#按照关键字传参数和按照位置传参数是可以混用的
#但是首先传按位置(就是参数的索引号,前后顺序号)的,再传按关键字(arg1= arg2=)
#按照位置传完该接受的参数只能接收一个值,不接受或者重复接受都不行

默认参数

默认参数是给参数加上一个默认的值,但我们调用函数的时候,如果传递了这个参数,那么使用我们传递过来的值;如果不传则使用默认的值,默认参数可以有多个,但是必须放在所有参数的最后。当我们有多个默认参数的时候,调用函数的时候可以使用参数名指定其中的某一个参数,以保证参数能准确的传递给被调用的函数。

#默认参数
def classmate(name,sex='男'): #默认参数是可以不传的参数,

print("姓名%s,性别%s"%(name,sex)) #在不传参数的情况下可以使用默认的值
classmate('yakun') #如果传了,就会使用传的值
classmate('守业')
classmate('飞龙')
classmate('晓梅','女')

姓名yakun,性别男
姓名守业,性别男
姓名飞龙,性别男
姓名晓梅,性别女

默认参数尽量避免可变数据类型

def func2(args,list=[]):
list.append(args)
return list
aa=func2('aa')
bb=func2('bb',[])
cc=func2('cc')
print(aa)
print(bb)
print(cc)

以下是打印的情况

['aa', 'cc']
['bb']
['aa', 'cc']

可以看到默认参数的初始值设置成了一个列表,这时候当不单传的话默认就是以当前的list去接受数据,

所以  aa  cc 的数据都是传到默认列表的内存空间里去了,所以  aa  cc 得到的值都是  [ 'aa', ' cc' ]

函数的返回值

本章小结

面向过程编程的问题:代码冗余、可读性差、可扩展性差(不易修改)

定义函数的规则:

1.定义:def 关键词开头,空格之后接函数名称和圆括号()。
2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
    参数可以定义多个,也可以不定义。
    参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**kwargs顺序定义。
    如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序
3.注释:函数的第一行语句应该添加注释。
4.函数体:函数内容以冒号起始,并且缩进。
5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None def 函数名(参数1,参数2,*args,默认参数,**kwargs):
"""注释:函数功能和参数说明"""
函数体
……
return 返回值

调用函数的规则:

1.函数名()
函数名后面+圆括号就是函数的调用。
2.参数:
圆括号用来接收参数。
若传入多个参数:
应按先位置传值,再按关键字传值
具体的传入顺序应按照函数定义的参数情况而定
3.返回值
如果函数有返回值,还应该定义“变量”接收返回值
如果返回值有多个,也可以用多个变量来接收,变量数应和返回值数目一致 无返回值的情况:
函数名() 有返回值的情况:
变量 = 函数名() 多个变量接收多返回值:
变量1,变量2,... = 函数名()

day11 python学习 函数的建立,返回值,参数的更多相关文章

  1. Python3基础 Python的函数都有返回值 无指定返回值的函数 返回NONE对象

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  2. 9 - Python函数定义-位置参数-返回值

    目录 1 函数介绍 1.1 为什么要使用函数 1.2 Python中的函数 2 函数的基本使用 3 函数的参数 3.1 参数的默认值 3.2 可变参数 3.2.1 可变位置传参 3.2.2 可变关键字 ...

  3. Python函数变量和返回值

    Python函数的全局变量和局部变量 1.不同的编程语言,程序可以分为函数和过程两大类,函数具有具体返回值,而过程则不具有具体的返回值,python只具有函数,因为对于它的一般函数,其返回值为所具体返 ...

  4. python开发初识函数:函数定义,返回值,参数

    一,函数的定义 1,函数mylen叫做函数名 #函数名 #必须由字母下划线数字组成,不能是关键字,不能是数字开头 #函数名还是要有一定的意义能够简单说明函数的功能 2,def是关键字 (define) ...

  5. python函数2(返回值、传递列表...)

    python函数2(返回值.传递列表...) 1.返回值 1.1.返回简单的值 #返回简单值 def get_formatted_name(first_name,last_name): "& ...

  6. day11 python之函数装饰器

    一,什么是装饰器? 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. 装饰器的应用场景:比如插入日志,性能测试,事 ...

  7. python执行系统命令后获取返回值的几种方式集合

    python执行系统命令后获取返回值的几种方式集合 今天小编就为大家分享一篇python执行系统命令后获取返回值的几种方式集合,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 第一种情 ...

  8. 二、python学习-函数

    类型判断 1.type()直接获取类型 2.isinstance 用法一:isinstance(值,类型) 返回真或假 用法二:isinstance(值,(类型1,类型2 ...)) 有一个类型满足 ...

  9. 【C语言入门教程】5.1 函数说明 与 返回值

    C 语言是结构化语言,它的主要结构成分是函数.函数被作为一种构件,用以完成程序中的某个具体功能.函数允许一个程序的各个任务被分别定义和编码,使程序模块化.本章介绍 C 语言函数的设计,如何用函数分解程 ...

随机推荐

  1. wpf里窗体嵌入winform控件被覆盖问题

      问题1:嵌套Winform控件(ZedGraph)在WPF的ScrollViewer控件上,出现滚动条,无论如何设置该Winform控件都在顶层,滚动滚动条会覆盖其他WPF控件. 解决办法:在Sc ...

  2. php--------php库生成二维码和有logo的二维码

    php生成二维码和带有logo的二维码,上一篇博客讲的是js实现二维码:php--------使用js生成二维码. 今天写的这个小案例是使用php库生成二维码: 效果图:        使用了 php ...

  3. highcharts图表配置参数汇总

    一.chart的部分相关属性说明    renderTo: 'container',      //图表的页面显示容器(也就是要显示到的div) chart.events.addSeries:添加数列 ...

  4. mysql 视图,事务,存储过程,触发器

    一 视图 视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表.使用视图我们可以把查询过程中的临时表摘出来,保存下来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sq ...

  5. view_baseInfo

    create view view_baseInfo as select c.spbh,c.tongym, c.spmch,c.shpgg,c.shpchd,a.pihao,a.pici,a.sxrq, ...

  6. OAF 通过个性化 在标准事件上添加验证

    在实际的开发过程中,我们经常会遇到以下情况: 在执行标准的功能之前要对个性化的内容进行校验. 比如:在某个标准页面通过个性化添加了一个勾选框,在点击下一步的时候必须去验证此勾选框是否勾选. 具体实现如 ...

  7. js获取当前点击元素的索引

    以ul下的li元素为例:获取li的索引,代码如下: <ul id="list"> <li></li> <li></li> ...

  8. 深入了解 Java-Netty高性能高并发理解

    https://www.jianshu.com/p/ac7fb5c2640f 一丶 Netty基础入门 Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为 ...

  9. 059——VUE中vue-router之路由嵌套在文章系统中的使用方法:

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 组件的 keep-alive 简介

    本篇文章,我们来讲一下keep-alive的实现.  更容易看懂 Vue中,有三个内置的抽象组件,分别是keep-alive.transition和transition-group, 它们都有一个共同 ...