Python之函数应用
来源:互联网 发布:英雄在美国的票房数据 编辑:程序博客网 时间:2024/06/06 03:16
1、创建函数
def fun(): print('这是一个简单的函数')
cont = 10def outer(): global cont # 函数内部要修改全局变量时 cont = 5 print(cont) outer()print(cont)
2、递归函数
递归函数最好不要使用,可以用循环实现。因为递归层次过多会导致栈溢出,出现无法预知的错误
def fun(n): if n == 1: return 1 return n+fun(n-1) # 用递归实现100以内的书累加print(fun(100))
3、闭包函数
def ou(): x = 10 def inr(): # 闭包函数:引用外部环境的变量 print(x) return inr()ou()
4、装饰器函数
#! -*- encoding:utf-8 -*-import timedef show_time(func): # 装饰器函数定义 def inner(): # 内部函数实现在原来基础上增加功能 star = time.time() func() # 此处是传进来的函数名,执行该函数 end = time.time() print(end - star) return inner # 注意:这里只返回内部函数的函数名(内存地址)而不是执行结果@show_time # @ 是装饰器的固定用法 意义:foo = show_time(foo)def foo(): print('foo...') time.sleep(2)@show_time # @ 是装饰器的固定用法 意义:bar = show_time(bar)def bar(): print('bar...') time.sleep(3)foo() # 执行一个函数必须在后面加小括号
#! -*- encoding:utf-8 -*-import timedef logger(flag=''): # 在原来的基础上再传一个参数进来 def show_time(func): # 装饰器函数定义 def inner(): # 内部函数实现在原来基础上增加功能 star = time.time() func() # 此处是传进来的函数名 end = time.time() print(end - star) if flag=='true': t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print(t) return inner # 注意:这里只返回内部函数的函数名(内存地址)而不是执行结果 return show_time # 返回内层函数名(对象)@logger('true') # @ 是装饰器的固定用法 意义:foo = logger('true')(foo)def foo(): print('foo...') time.sleep(2)@logger() # @ 是装饰器的固定用法 意义:bar = logger()(bar)def bar(): print('bar...') time.sleep(3)foo() # 执行一个函数必须在后面加小括号# foo...# 2.0008480548858643# 2017-12-04 19:27:39
5、函数参数
def fun(name, age='20', *list, **dict): # 参数位置顺序:关键参数 ,默认参数, 不定长无键参数, 不定长有键参数
- 关键参数:调用函数时,指定要传进来的固定参数
- 默认参数:该参数在你调用函数时有一个默认的值
- 不定长无键参数(动态参数):可以存在多个值,常见传一个列表。传到函数里会成为一个元组类型。
- 不定长有键参数(动态参数):可以传一个键值对。传进函数会成为一个字典类型。
#!/usr/bin/env python# -*- coding:utf-8 -*-def f(*args): # *args 在这里是一个标准写法 print(args, type(args))f(['1', '2', '3', '4']) # 这里会把列表当成一个参数,传进函数里也是元组里的一个值 (['1', '2', '3', '4'],) <class 'tuple'>f(*['1', '2', '3', '4']) # 这里就相当于把列表里的值for循环一个一个传进函数里。跟形参有对应关系。 ('1', '2', '3', '4') <class 'tuple'># ——————————————————————————————————————————————————————————————def g(**kwargs): # **kwargs 在这里是一个标准写法 print(kwargs, type(kwargs))di = {'name': 'liujun', 'age': '23', }# g(di) # 这里是语法错误,不能直接传一个字典变量进去。g(k1 = di) # 只能传键值对{'k1': {'name': 'liujun', 'age': '23'}} <class 'dict'>g(**di) # 这里才是传一个原本的字典,也是跟形参有对应关系 {'name': 'liujun', 'age': '23'} <class 'dict'>
6、函数返回值
def p(): print('这是一个函数;') # return 123ret = p()print(ret) # 函数内部如果不指定返回值,会默认返回一个 None
函数只要执行了return 就会退出函数运行。
阅读全文
0 0
- Python之函数应用
- python之range()函数的应用总结
- python核心编程-GUI程序之偏函数应用
- python 偏函数应用
- [Python]偏函数应用
- python pickle函数应用
- python偏函数应用
- Python偏函数应用
- 实例应用之Python
- Python之列表应用
- Python之opencv应用
- python之matplotlib应用
- Python之模块应用
- python strip()函数的应用
- python函数应用(1)
- python函数应用(2)
- JavaScript之函数应用
- C++之函数应用
- 图片拖动旋转缩放裁剪
- IntelliJ使用指南—— 导入Eclipse的Web项目
- BootStomp: 关于手机设备bootloader的安全 -- 6 BootStomp
- 前端开发部分知识点总结
- VIM操作--跳到最后一行和跳到最后一行的最后一个字符
- Python之函数应用
- 枚举 火柴等式总和
- C/C++ quizs
- OAuth认证资料
- js编码的实用技巧(一)
- 微信小程序农阳历日历选择器农阳历日期互转
- 开源项目QtXlsxWriter编译成静态库(VS2013 + Qt5.4.2 64位)
- java加密、解密方法
- 变量和函数提升