python函数的使用

制作人:全心全意

函数的定义

  1. def 函数名(参数):
  2. 函数体

参数的使用

  1. def 函数名(a):
  2. 函数体
  3.  
  4. 函数名(5)

  默认函数

  1. def 函数名(a=5):
  2. 函数体
  3.  
  4. 函数名(4)
  5. 函数名()

  元组函数

  1. def 函数名(a,b=5,*c):
  2. 函数体
  3.  
  4. 函数名(1,2,3,4,5)

  关键字函数

  1. def 函数名(a,b=5,*c,**d):
  2. 函数体
  3.  
  4. 函数名(1,2,3,4,5,t1=6,t2=7)

元组和关键字分解传参

  元组函数

  1. def 函数名(a,b,c,d):
  2. 函数体
  3.  
  4. tt = (1,2,3,4)
  5. 函数名(*tt)

  关键字函数

  1. def 函数名(a,b,c):
  2. 函数体
  3.  
  4. tt = {"a":3,"b":4,"c":5}
  5. 函数名(**tt)

如果默认值参数使用的是列表之类的可变数据类型,那么会在多次调用之间共享默认值

  1. def 函数名(b,a=[0]):
  2. a[0] += 1
  3. res = b + a[0]
  4. print(res)
  5.  
  6. 函数名(1) #
  7. 函数名(1) #

闭包函数

  1. def myfun(a):
  2. def mynest(b):
  3. return a + b
  4. return mynest
  5.  
  6. f = myfun(10)
  7. print(f(20)) #30

  注意示例一:

  1. def myfun():
  2. lists = []
  3. for i in range(0,3):
  4. def mynest(b):
  5. return i + b #i的值为myfun执行完后的值2
  6. lists.append(mynest)
  7. return lists
  8. funcs = myfun()
  9. print(funcs[0](10)) #
  10. print(funcs[1](10)) #
  11. print(funcs[2](10)) #12

  注意示例二:(使用默认值参数)

  1. def myfun():
  2. lists = []
  3. for i in range(0,3):
  4. def mynest(b,i=i):
  5. return i + b #i有默认固定的值
  6. lists.append(mynest)
  7. return lists
  8. funcs = myfun()
  9. print(funcs[0](10)) #
  10. print(funcs[1](10)) #
  11. print(funcs[2](10)) #

递归函数

  1. def myfun(num):
  2. print("*"*num)
  3. if num <= 0:
  4. return
  5. myfun(num - 1)
  6. myfun(20)

高阶函数

  1. def myfun(func,string):
  2. func(string)
  3.  
  4. def myprint1(string):
  5. print(string)
  6.  
  7. def myprint2(string):
  8. print(string * 2)
  9.  
  10. myfun(myprint1,"nihao") #nihao
  11. myfun(myprint2,"nihao") #nihaonihao

lambda函数

  lambda只能包含一个表达式

  1. a = lambda x,y:x+y
  2. print(a(2,3))
  3.  
  4. def myfun(func,string):
  5. func(string)
  6. myfun(lambda x:print(x*3),"nihao")

  使用lambda创建一个排序函数

  1. def mysort(func,lists):
  2. for i in range(0,len(lists)):
  3. for n in range(i,len(lists)):
  4. if func(lists[i],lists[n]):
  5. lists[i],lists[n] = lists[n],lists[i]
  6. return lists
  7.  
  8. lists = [3,5,9,7,9,8,10]
  9.  
  10. print(mysort(lambda x,y:True if x > y else False,lists))
  11. print(mysort(lambda x,y:True if x < y else False,lists))

函数装饰器的使用

装饰器的作用是先将传递的参数使用装饰器进行检查

以DEBUG和登录为例:

  1. DEBUG = True
  2. def decorator_1(func):
  3. print("调试装饰器")
  4. def decorator_nest(*args,**kew):
  5. print("开始调试")
  6. print("*"*40)
  7. print(args,kew)
  8. return func(*args,**kew)
  9. if DEBUG:
  10. return decorator_nest
  11. else:
  12. return func
  13.  
  14. def login_required(func):
  15. def decorator_nest(*args,**kew):
  16. print("登录装饰器")
  17. if "userid" not in kew:
  18. print("尚未登录,禁止访问")
  19. return None
  20. else:
  21. print("欢迎回来^_^")
  22. return func(*args,**kew)
  23. return decorator_nest
  24.  
  25. @login_required
  26. @decorator_1
  27. def myfun(*args,**kew):
  28. print(111)
  29.  
  30. myfun("nihao","hello","hi",userid=10)

python函数的使用的更多相关文章

  1. python 函数之day3

    一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...

  2. Python函数作用域的查找顺序

    函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...

  3. Python函数讲解

    Python函数

  4. Python函数信息

    Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...

  5. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  6. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  7. Python函数解析

    对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...

  8. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

  9. Python函数1

    Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...

  10. python函数传参是传值还是传引用?

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

随机推荐

  1. WPF另类实现摄像头录像

    WPF中使用第三方控件来直接进行录像的控件没有找到(aforgenet好像不维护了?WPFMediaKit好像只能实现摄像头拍照.收费的控件没有使用,不做评论.) 通过百度(感谢:https://ww ...

  2. 红帽(RedHat8) RHEL8.0系统安装教程(小白都会)

    可以去了解一下Red Hat8产品详情:https://www.RedHat.com/zh/enterprise-linux-8 先准备VMware Workstation 15 Pro版本,Red ...

  3. 《Android Studio实战 快速、高效地构建Android应用》--三、重构代码

    要成为高效的Android程序员,需要头脑灵活,能够在开发.调试和测试的过程中重构代码,重构代码最大的风险是可能会引入意外的错误,Android Studio通过分析某些具有危险性的重构操作来降低风险 ...

  4. Django ORM各种查询

    正向和反向查询 正向 ----> 关联字段在当前表中,从当前表向外查叫正向 反向 —> 关联字段不在当前表中,当当前表向外查叫反向 正向通过字段,反向通过表名查 表结构 from djan ...

  5. Net Core 中WebAPI有关 Session的设置,及获取

    步骤一: 在Startup 文件中做相应的设置 ConfigureServices方法里添加 //ConfigureServices添加: services.AddSession(options =& ...

  6. Golang调用Dll案例

    Golang调用Dll案例 前言 在家办公已经两个多星期了,目前最大的困难就是网络很差.独自一个人用golang开发调用dll的驱动程序.本来就是半桶水的我,还在为等待打开一个页面而磨平了耐心.本想依 ...

  7. Linux gcc链接动态库出错:LIBRARY_PATH和LD_LIBRARY_PATH的区别

    昨天在自己的CentOs7.1上写makefile的时候,发现在一个C程序在编译并链接一个已生成好的lib动态库的时候出错.链接命令大概是这样的: [root@typecodes tcpmsg]# g ...

  8. NR / 5G - MAC Scheduler

  9. 10-SpringMVC04

    FreeMarker 1.入门案例 1. 导包:freemarker.jar 2. 需要创建模板文件的路径:src/main/resources/template 3. 创建一个模板对象:hello. ...

  10. 各类JWT库(java)的使用与评价

    [搬运工] 出处:http://andaily.com/blog/?p=956 在 https://jwt.io/ 网站中收录有各类语言的JWT库实现(有关JWT详细介绍请访问 https://jwt ...