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. SpringBoot 的不同

    这些在写前端页面的时候,ssm框架中,在页面做出修改之后,保存一下,重新刷新一下浏览器页面就发生了更新 但是sprigBoot中好像不一样,好像是需要对页面进行重新编译一下,浏览器页面才会发生变化 ( ...

  2. AcWing 786.第k个数

    AcWing 786.第k个数 题目描述 给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列的第k小的数是多少. 输入格式 第一行包含两个整数 n 和 k. 第二行包含 n 个整数( ...

  3. ros之自定义服务数据

    如何自定义服务数据 string name Uint8 age Uint8 sex Uint8 unknown =0 Uint8 male =1 Uint8 female = 2 (上面的是Reque ...

  4. pyspark 记录

    import os import sys spark_name = os.environ.get('SPARK_HOME',None) if not spark_name: raise ValueEr ...

  5. [Python源码剖析]获取Python小整数集合范围

    #!/usr/bin/env python #-*- coding=utf-8 -*- small_ints = dict() for i in range(-10000,10000): small_ ...

  6. 实例探究Aspectj,解析SentinelResourceAspect

    为了学习SentinelResourceAspect,这篇文章里我用Aspectj实现一个AOP实例,一起来看下. Sentinel 提供了 @SentinelResource 注解用于定义资源,支持 ...

  7. Mac-Mysql忘记root密码

    cd /usr/local/mysql/bin 切换到root权限 ,需要输入密码: sudo su 输入之后会看见如下信息: sh-3.2# 使用如下命令以安全模式运行mysql ./mysqld_ ...

  8. C++括号匹配检测(用栈)

    输入一串括号,包括圆括号和方括号,()[],判断是否匹配,即([]())或[([][])]为匹配的正确的格式,[(])或([())为不匹配的格式. #include<iostream> # ...

  9. Golang robfig/cron 实现解析

    ​    robfig/cron是GO语言中一个定时执行注册任务的package,  最近我在工程中使用到了它,由于它的实现优雅且简单(主要是简单),所以将源码过了一遍,记录和分享在此. 文档:htt ...

  10. win10CPU版TensorFlow安装详细流程(踩N个坑之后的总结)

    版本说明: 多次实验后,python3.5+TensorFlow1.2+numpy1.16.4比较成功,不会报奇奇怪怪的错.(安装流程中会说到,不需要提前下载) 准备工作: 找到电脑:C:\Users ...