python函数的使用
python函数的使用
制作人:全心全意
函数的定义
- def 函数名(参数):
- 函数体
参数的使用
- def 函数名(a):
- 函数体
- 函数名(5)
默认函数
- def 函数名(a=5):
- 函数体
- 函数名(4)
- 函数名()
元组函数
- def 函数名(a,b=5,*c):
- 函数体
- 函数名(1,2,3,4,5)
关键字函数
- def 函数名(a,b=5,*c,**d):
- 函数体
- 函数名(1,2,3,4,5,t1=6,t2=7)
元组和关键字分解传参
元组函数
- def 函数名(a,b,c,d):
- 函数体
- tt = (1,2,3,4)
- 函数名(*tt)
关键字函数
- def 函数名(a,b,c):
- 函数体
- tt = {"a":3,"b":4,"c":5}
- 函数名(**tt)
如果默认值参数使用的是列表之类的可变数据类型,那么会在多次调用之间共享默认值
- def 函数名(b,a=[0]):
- a[0] += 1
- res = b + a[0]
- print(res)
- 函数名(1) #
- 函数名(1) #
闭包函数
- def myfun(a):
- def mynest(b):
- return a + b
- return mynest
- f = myfun(10)
- print(f(20)) #30
注意示例一:
- def myfun():
- lists = []
- for i in range(0,3):
- def mynest(b):
- return i + b #i的值为myfun执行完后的值2
- lists.append(mynest)
- return lists
- funcs = myfun()
- print(funcs[0](10)) #
- print(funcs[1](10)) #
- print(funcs[2](10)) #12
注意示例二:(使用默认值参数)
- def myfun():
- lists = []
- for i in range(0,3):
- def mynest(b,i=i):
- return i + b #i有默认固定的值
- lists.append(mynest)
- return lists
- funcs = myfun()
- print(funcs[0](10)) #
- print(funcs[1](10)) #
- print(funcs[2](10)) #
递归函数
- def myfun(num):
- print("*"*num)
- if num <= 0:
- return
- myfun(num - 1)
- myfun(20)
高阶函数
- def myfun(func,string):
- func(string)
- def myprint1(string):
- print(string)
- def myprint2(string):
- print(string * 2)
- myfun(myprint1,"nihao") #nihao
- myfun(myprint2,"nihao") #nihaonihao
lambda函数
lambda只能包含一个表达式
- a = lambda x,y:x+y
- print(a(2,3))
- def myfun(func,string):
- func(string)
- myfun(lambda x:print(x*3),"nihao")
使用lambda创建一个排序函数
- def mysort(func,lists):
- for i in range(0,len(lists)):
- for n in range(i,len(lists)):
- if func(lists[i],lists[n]):
- lists[i],lists[n] = lists[n],lists[i]
- return lists
- lists = [3,5,9,7,9,8,10]
- print(mysort(lambda x,y:True if x > y else False,lists))
- print(mysort(lambda x,y:True if x < y else False,lists))
函数装饰器的使用
装饰器的作用是先将传递的参数使用装饰器进行检查
以DEBUG和登录为例:
- DEBUG = True
- def decorator_1(func):
- print("调试装饰器")
- def decorator_nest(*args,**kew):
- print("开始调试")
- print("*"*40)
- print(args,kew)
- return func(*args,**kew)
- if DEBUG:
- return decorator_nest
- else:
- return func
- def login_required(func):
- def decorator_nest(*args,**kew):
- print("登录装饰器")
- if "userid" not in kew:
- print("尚未登录,禁止访问")
- return None
- else:
- print("欢迎回来^_^")
- return func(*args,**kew)
- return decorator_nest
- @login_required
- @decorator_1
- def myfun(*args,**kew):
- print(111)
- myfun("nihao","hello","hi",userid=10)
python函数的使用的更多相关文章
- python 函数之day3
一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...
- Python函数作用域的查找顺序
函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...
- Python函数讲解
Python函数
- Python函数信息
Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...
- Python函数参数默认值的陷阱和原理深究"
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...
- Python开发【第四章】:Python函数剖析
一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...
- Python函数解析
对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...
- Python入门笔记(18):Python函数(1):基础部分
一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...
- Python函数1
Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...
- python函数传参是传值还是传引用?
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...
随机推荐
- WPF另类实现摄像头录像
WPF中使用第三方控件来直接进行录像的控件没有找到(aforgenet好像不维护了?WPFMediaKit好像只能实现摄像头拍照.收费的控件没有使用,不做评论.) 通过百度(感谢:https://ww ...
- 红帽(RedHat8) RHEL8.0系统安装教程(小白都会)
可以去了解一下Red Hat8产品详情:https://www.RedHat.com/zh/enterprise-linux-8 先准备VMware Workstation 15 Pro版本,Red ...
- 《Android Studio实战 快速、高效地构建Android应用》--三、重构代码
要成为高效的Android程序员,需要头脑灵活,能够在开发.调试和测试的过程中重构代码,重构代码最大的风险是可能会引入意外的错误,Android Studio通过分析某些具有危险性的重构操作来降低风险 ...
- Django ORM各种查询
正向和反向查询 正向 ----> 关联字段在当前表中,从当前表向外查叫正向 反向 —> 关联字段不在当前表中,当当前表向外查叫反向 正向通过字段,反向通过表名查 表结构 from djan ...
- Net Core 中WebAPI有关 Session的设置,及获取
步骤一: 在Startup 文件中做相应的设置 ConfigureServices方法里添加 //ConfigureServices添加: services.AddSession(options =& ...
- Golang调用Dll案例
Golang调用Dll案例 前言 在家办公已经两个多星期了,目前最大的困难就是网络很差.独自一个人用golang开发调用dll的驱动程序.本来就是半桶水的我,还在为等待打开一个页面而磨平了耐心.本想依 ...
- Linux gcc链接动态库出错:LIBRARY_PATH和LD_LIBRARY_PATH的区别
昨天在自己的CentOs7.1上写makefile的时候,发现在一个C程序在编译并链接一个已生成好的lib动态库的时候出错.链接命令大概是这样的: [root@typecodes tcpmsg]# g ...
- NR / 5G - MAC Scheduler
- 10-SpringMVC04
FreeMarker 1.入门案例 1. 导包:freemarker.jar 2. 需要创建模板文件的路径:src/main/resources/template 3. 创建一个模板对象:hello. ...
- 各类JWT库(java)的使用与评价
[搬运工] 出处:http://andaily.com/blog/?p=956 在 https://jwt.io/ 网站中收录有各类语言的JWT库实现(有关JWT详细介绍请访问 https://jwt ...