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函数传参是传值还是传引用?
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...
随机推荐
- python学习Day04--列表
[主要内容] 1.列表的索引: lst=[1,2,3,4,5,6] print(lst[0]) #获取第一个元素 lst[1]='你好' #改变列表中的值 2.列表的切片: lst=[ ...
- openstack 架构
openstack 概念架构: openstack逻辑架构 常见的架构:
- 在Centos上安装docker,部署mysql数据库
何为docker? Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 本机环境 24小时不关机的Centos ...
- Python 中的三元运算(软件测试中运用)
前言 在java中,有类似于 (condition) ? a :b 这样的语法,表示如果condition 为真,返回a,反之返回b.我们称之为三元运算. 那Python中,有没有这样的语法呢,非常遗 ...
- Go语言标准库之net/http
Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现. net/http介绍 Go语言内置的net/http包提供了HTTP客户端和服务端的实现. HTTP协议 超文本传输协 ...
- java与c++,python
Java与C++的异同点总结 C++/C/JAVA/Python之间的区别? C++语言与Java语言的区别有哪些? java与C++的区别
- Spring Boot从入门到精通(二)配置GitHub并上传Maven项目
简单介绍一下GitHub,它是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库托管 ...
- Centos7.6安装zabbix留纪录
1)查看系统版本 [root@zabbix-s41 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@zabbix-s41 ~ ...
- 使用newtonsoft完美序列化WebApi返回的ValueTuple
由于开发功能的需要,又懒得新建太多的class,所以ValueTuple是个比较好的偷懒方法,但是,由于WebApi需要返回序列化后的json,默认的序列化只能将ValueTuple定义的各个属性序列 ...
- Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib
如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...