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. python学习Day04--列表

    [主要内容] 1.列表的索引: lst=[1,2,3,4,5,6] print(lst[0])      #获取第一个元素 lst[1]='你好'    #改变列表中的值 2.列表的切片: lst=[ ...

  2. openstack 架构

    openstack 概念架构: openstack逻辑架构 常见的架构:

  3. 在Centos上安装docker,部署mysql数据库

    何为docker? Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 本机环境 24小时不关机的Centos ...

  4. Python 中的三元运算(软件测试中运用)

    前言 在java中,有类似于 (condition) ? a :b 这样的语法,表示如果condition 为真,返回a,反之返回b.我们称之为三元运算. 那Python中,有没有这样的语法呢,非常遗 ...

  5. Go语言标准库之net/http

    Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现. net/http介绍 Go语言内置的net/http包提供了HTTP客户端和服务端的实现. HTTP协议 超文本传输协 ...

  6. java与c++,python

    Java与C++的异同点总结 C++/C/JAVA/Python之间的区别? C++语言与Java语言的区别有哪些? java与C++的区别

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

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

  8. Centos7.6安装zabbix留纪录

    1)查看系统版本 [root@zabbix-s41 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@zabbix-s41 ~ ...

  9. 使用newtonsoft完美序列化WebApi返回的ValueTuple

    由于开发功能的需要,又懒得新建太多的class,所以ValueTuple是个比较好的偷懒方法,但是,由于WebApi需要返回序列化后的json,默认的序列化只能将ValueTuple定义的各个属性序列 ...

  10. Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib

    如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...