阅读目录

一、为什么要使用函数

二、函数的定义与调用

三、函数返回值

四、函数的参数

五、本章小结

六、装饰器

一、函数流程图:

  

  函数名的命名规则:

  1、函数名必须由字母下划线数字组成,不能是关键字和数字开头

2、函数名还是要有一定的意义能够简单说明函数的功能

  初识函数定义:

  新建一个mylen的函数

def mylen():'''计算S1 的长度'''s1 = 'hello world'length = 0for i in s1:length = length + 1print(length)    

  初识函数调用:  

  通过调用mylen的函数,实现计算hello word的长度。

str_len = mylen()
print('str_len:%s'%str_len)

  以上代码也只是完成调用,但是函数体内并没有返回值,所以调用为None,使用return关键字返回结果。代码如下: 

    return length   #将函数体内的值赋给mylen
str_len = mylen()
print('str_len:%s'%str_len)

  return关键字的作用:

  return是一个关键字,在pycharm里会高亮显示。

函数体内不写return的情况下,会默认返回一个None,需要注意的是return和返回值之间要由一个空格,return可以返回任意数据类型的值。

返回多个值: 

可以返回多个值,会被组织成元祖返回,也可以用多个值来接受。

函数的参数:

我们要告诉mylen函数要计算的字符串是谁,这个过程就叫做传递参数,简称传参,我们调用函数的传递这个'hello world'和定义函数时的S1就是参数

实参与形参:

我们调用函数时传递的这个'hello world'被称为实际参数,因为这个是要实际交歌函数的内容,简称实参

定义函数时的S1,只是一个变量的名字,被称为形式参数。因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参

参数传递:

传递多个参数

参数可以传递多个,多个参数间用逗号分割。(举例如下)

def mymax(x,y):the_max = x if x > y else yreturn the_maxma = mymax(10,20)
print(ma)

  位置参数

  站在实参的角度

  1、按照位置传值  

def mymax(x,y):#此时x=10,y=20the_max = x if x > y else yreturn the_maxma = mymax(10,20)
print(ma)

  2、按照关键字传值  

def mymax(x,y):#此时x = 20,y = 10print(x,y)the_max = x if x > y else yreturn the_maxma = mymax(y = 10,x = 20)
print(ma)

  3、位置、关键字形式混着用  

def mymax(x,y):#此时x = 10,y = 20print(x,y)the_max = x if x > y else yreturn the_maxma = mymax(10,y = 20)
print(ma)

  正确用法

  问题一:位置参数必须在关键子参数的前面

  问题二:对于一个形参只能赋值一次

  站在形参的角度

  位置参数必须传值  

def mymax(x,y):#此时x = 10,y = 20print(x,y)the_max = x if x > y else yreturn the_max#调用mymax不传递参数
ma = mymax()
print(ma)#结果
TypeError: mymax() missing 2 required positional arguments: 'x' and 'y'

  默认参数

  1、正常使用

    使用方法

    为什么要有默认参数:将变化较小的值设置成默认参数

  2、默认参数的定义  

def stu_info(name,sex = "male"):"""打印学生信息函数,由于班中大部分学生都是男生,所以设置默认参数sex的默认值为'male'"""print(name,sex)
stu_info('alex')
stu_info('eva','female')

  3、参数陷阱:默认参数是一个可变数据类型  

def defult_param(a,l = []):l.append(a)print(l)defult_param('alex')
defult_param('egon')

  动态参数

    按位置传值多余的参数都由args统一接受,保存成一个元祖的形式  

def mysum(*args):the_sum = 0for i in args:the_sum+=ireturn the_sumthe_sum = mysum(1,2,3,4)
print(the_sum)

def stu_info(**kwargs):print(kwargs)print(kwargs['name'],kwargs['sex'])stu_info(name = 'alex',sex = 'male')

  本章小结

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

定义函数的规则:

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

  调用函数的规则:

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

装饰器

不带参数的装饰器:

def wrapper(func):def inner(*args,**wargs):'''函数执行之前代码块'''ret=func()return ret'''函数执行之后代码块'''return inner

  带参数的装饰器:

F = False              #装饰器开关,
def outer(flag):def wrapper(func):def inner(*args,**kwargs):if flag:print('before')ret = func(*args,**kwargs)print('after')else:ret = func(*args, **kwargs)return retreturn innerreturn wrapper

转载于:https://www.cnblogs.com/bingpan/p/7236007.html

Python基础之函数与装饰器相关推荐

  1. python基础二 函数 递归 装饰器 迭代器 生成器 内置函数 二分法应用

    函数 迭代器 生成器 拆包和装包 tup=("j1","a1","c1","k1") a,b,c,d=tup print ...

  2. 十一. Python基础(11)—补充: 作用域 装饰器

    十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...

  3. python中高阶函数和装饰器_Python高阶函数与装饰器函数的深入讲解

    本文主要介绍的是Python高阶函数与装饰器函数的相关内容,分享给大家,下面话不多说了,来一起看看详细的介绍吧 高阶函数 1.可以使用函数对象作为参数的函数 2.或可以将函数作为返回值的函数 3.函数 ...

  4. Python练习之函数,装饰器,面向对象

    Python练习之函数,装饰器,面向对象 1.函数 2 装饰器 3.面向对象 1.函数 编写函数,实现接受一个字符串,分别统计大小写字母,数字,其他字符的个数,并返回结果 #方法一 str=input ...

  5. python高阶函数闭包装饰器_Python_基础_(装饰器,*args,**kwargs,高阶函数,函数闭包,函数嵌套)...

    一,装饰器 装饰器:本质就是函数,功能是为其它的函数动态添加附加的功能 原则:对修改关闭对扩展开放 1.不修改被修饰函数的源代码 2.不修改被修改函数的调用方式 装饰器实现的知识储备:高阶函数,函数嵌 ...

  6. python基础知识-11-函数装饰器

    python其他知识目录 1.装饰器学习前热身准备 1.1装饰器简介 1.2装饰器热身分析 1) def func():pass v1 = 10 v2 = func #将函数名赋予一个变量,就和变量赋 ...

  7. python中高阶函数和装饰器_三.Python高阶函数和装饰器

    1高阶函数 1.1 数学概念回顾下数学知识: y=f(x) 这是最开始接触的普通函数 y=g(f(x)) 这个就是我们接触到的高阶函数 在数学和计算机科学中,高阶函数至少应当是满足下面一个条件的函数: ...

  8. python高阶函数闭包装饰器_Python自学从入门到就业之高阶函数、嵌套函数、闭包、装饰器...

    高阶函数 在Python中,函数其实也是一种数据类型. def test(): return 'hello world' print(type(test)) # 函数对应的数据类型是 function ...

  9. Day4 - Python基础4 迭代器、装饰器、软件开发规范

    Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1. ...

最新文章

  1. 天数换算月份_Js 计算指定月份的天数
  2. Glide 框架解析
  3. 清华大学计算机网络研究中心,清华大学信息网络工程研究中心简介
  4. php cookie删除不了,php cookie删除不了怎么办
  5. [笔记]NumPy基础操作
  6. 工作组访问不到别人的计算机,众果搜的博客
  7. django 1.8 官方文档翻译:2-1-1 模型语法
  8. 证明一下拉普拉斯的《概率分析论》观点
  9. 016.OpenStack及云计算(面试)常见问题
  10. JAVAWEB开发之数据库简介、MySQL的安装与卸载(处理中文乱码)、以及MySQL语言(DDL、DML、DCL、DQL)的详解和使用
  11. VsCode中文输出为乱码的原因及解决方法
  12. 【java】详解native方法的使用
  13. 中国互联网发展状况报告:境内约 2.6 万网站被植入后门
  14. STM32 学习十 Flash下载与调试
  15. java 数字转换字母大写_大写字母或小写字母转换为数字
  16. 最新鑫迪自助建站系统源码V1.1完整版
  17. 0021:孩子也是要将心比心的
  18. Unity3D坦克大战游戏开发——学习笔记(下)
  19. 黑苹果睡眠唤醒usb失灵_黑苹果解决USB3.0驱动问题
  20. 解决win10搜索框不能用的问题

热门文章

  1. Aristochart – 灵活的 HTML5 Canvas 折线图
  2. Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习...
  3. Hadoop生态圈以及各组成部分的简介
  4. ios 导航栏(自己定义和使用系统方式)
  5. SVG 基础知识 回顾
  6. 前端学习 -- 内联框架iframe
  7. iOS开发之 [NSNull length]:unrecognized selector sent
  8. mysql 存储过程调用权限消失的问题,恢复权限
  9. 快速启动栏的现实桌面快捷方式
  10. 知道Google map上面街景怎么来的吗?-相当强大