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函数传参是传值还是传引用?
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...
随机推荐
- SpringBoot 的不同
这些在写前端页面的时候,ssm框架中,在页面做出修改之后,保存一下,重新刷新一下浏览器页面就发生了更新 但是sprigBoot中好像不一样,好像是需要对页面进行重新编译一下,浏览器页面才会发生变化 ( ...
- AcWing 786.第k个数
AcWing 786.第k个数 题目描述 给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列的第k小的数是多少. 输入格式 第一行包含两个整数 n 和 k. 第二行包含 n 个整数( ...
- ros之自定义服务数据
如何自定义服务数据 string name Uint8 age Uint8 sex Uint8 unknown =0 Uint8 male =1 Uint8 female = 2 (上面的是Reque ...
- pyspark 记录
import os import sys spark_name = os.environ.get('SPARK_HOME',None) if not spark_name: raise ValueEr ...
- [Python源码剖析]获取Python小整数集合范围
#!/usr/bin/env python #-*- coding=utf-8 -*- small_ints = dict() for i in range(-10000,10000): small_ ...
- 实例探究Aspectj,解析SentinelResourceAspect
为了学习SentinelResourceAspect,这篇文章里我用Aspectj实现一个AOP实例,一起来看下. Sentinel 提供了 @SentinelResource 注解用于定义资源,支持 ...
- Mac-Mysql忘记root密码
cd /usr/local/mysql/bin 切换到root权限 ,需要输入密码: sudo su 输入之后会看见如下信息: sh-3.2# 使用如下命令以安全模式运行mysql ./mysqld_ ...
- C++括号匹配检测(用栈)
输入一串括号,包括圆括号和方括号,()[],判断是否匹配,即([]())或[([][])]为匹配的正确的格式,[(])或([())为不匹配的格式. #include<iostream> # ...
- Golang robfig/cron 实现解析
robfig/cron是GO语言中一个定时执行注册任务的package, 最近我在工程中使用到了它,由于它的实现优雅且简单(主要是简单),所以将源码过了一遍,记录和分享在此. 文档:htt ...
- win10CPU版TensorFlow安装详细流程(踩N个坑之后的总结)
版本说明: 多次实验后,python3.5+TensorFlow1.2+numpy1.16.4比较成功,不会报奇奇怪怪的错.(安装流程中会说到,不需要提前下载) 准备工作: 找到电脑:C:\Users ...