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函数的使用的更多相关文章

  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. vue-particles做背景,鼠标动画粒子连线填坑(按钮没有点击响应)

    为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果. 解决问题: 以背景方式显示 无法获取按钮焦点, ...

  2. CSS颜色表示的几种方式

    在CSS中颜色有很多表示方式,今天列出一些常见的颜色表示方式及它们的用法. ①color:blue;  第一种,调用颜色属性,将颜色的英文输入在冒号后,以分号结束. 这种方法直接了当,但是能表示的颜色 ...

  3. java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

  4. js笔记(1)--第一天记录

    刚刚接触JavaScript这门语言不久,所以希望每一次都记一点东西下来,巩固下知识. 首先,写了一个demo,是来计算两个数字的和的,如果直接把 v1=text1.value,和 v2=text2. ...

  5. android studio闪退的原因

    可能是因为某个监听的问题,比如没有把Mainacticity中定义的button和布局文件中的按钮控件关联起来,就会出现这个问题

  6. Vsftpd: 基于PAM认证的虚拟用户和匿名用户

    目录 环境说明效果说明及截图①. 安装组件②. 系统账户建立③. 编辑vsftpd的配置文件④. 生成虚拟用户的数据库文件⑤. 生成一个使用vsftpd_login.db数据文件的PAM认证文件⑥. ...

  7. 微信小程序开发技巧总结(二) -- 文件的选取、移动、上传和下载

    微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 1.不同类型文件的选取 1.1 常用的图片 视频 对于大部分开发者来说,需要上传的文件形式主要为图片,微信为此提供了接口. wx.ch ...

  8. 杂记 -- 关于vue-router样式、vuecli引用全局js函数、vue.slot用法

    1.routerLinkTo 样式设置 首先,点击routerlink标签如下图:添加:router-link-active,router-link-exact-active两个类的样式 router ...

  9. Spring Boot从入门到精通(二)配置GitHub并上传Maven项目

    简单介绍一下GitHub,它是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库托管 ...

  10. Spring中的可扩展接口

    1.监听器Listener(点此连接,执行流程带源码分析及demo) 2.bean定义的后置处理器(BeanDefinitionRegistryPostProcessor)和bean工厂的后置处理器( ...