码迷,mamicode.com
首页 > 编程语言 > 详细

python--函数(二)、装饰器、

时间:2017-06-17 18:22:53      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:dict   max   它的   json   return   for   本质   ems   通过   

1.函数即变量

  函数即变量,hello为变量,输出的是一个内存地址,它把函数体存储在内存里;hello()是一个函数,函数名+小括号就是调用函数。

1  def hello():
2      print(nihao)
3  print(hello)
4  hello()

2. 高阶函数

  一个函数的入参是一个函数时,这个函数就是高阶函数。

1 def s_int(n):
2     return int(n)
3 def add(x,y,z):
4     print(z(x)+z(y))        #z是一个函数,把x、y的值传给z,然后z函数处理后把两个值相加
5 add(2,3,s_int)

3. 嵌套函数

  嵌套函数就是在函数内部再定义一个函数,注意是定义一个函数,而非是再调用一个函数。

1 def test1():
2     def test2():
3         print(test2)
4     print(test1)
5     test2()
6 test1()

4、装饰器

  装饰器实际就是装饰函数,它的作用是给别的函数增加新功能,却不改变原来函数的调用方式;

  下面是一个统计函数调用时间的函数,它通过装饰器在不改变原有函数调用方式的前提下,统计了运行时间。

 1 import time
 2 def test1(func):
 3     def deco():             #此函数进行运行时间计算
 4         start_time = time.time()
 5         func()
 6         stop_time = time.time()
 7         print(the func run time is %s % (stop_time - start_time))
 8     return deco             #函数运行后返回deco变量
 9 @test1                      #调用装饰器,用在需要统计时间的函数前面
10 def bar():
11     time.sleep(2)
12     print(in the bar)
13 bar()                       #调用该函数时,执行了装饰函数,统计了运行时间

 5. 递归函数

  一个函数子集调用自己就是递归函数,一个函数最多可调用自己999次,故其要有一个明确的结束条件,另递归函数的效率

  不高,尽量少用。

1 def test():
2     num = int(input(please enter a num:))
3     if num%2 == 0:
4         return True
5     else:
6         print(非偶数,请重新输入)
7         test()          #可以起到循环的作用
8 test()

6. 内置函数

  python默认定义好的函数

 1 #强制类型转换
 2 bool(s)   #bool类型
 3 int()       #整形
 4 float()     #小数
 5 str()       #字符串
 6 dict()      #字典
 7 list()      #列表
 8 set()       #集合
 9 tuple()     #元组
10 
11 print(dir(1))              #打印传入对象的可调用方法
12 print(eval([]))         #执行python代码,只能执行简单的,定义数据类型和运算
13 print(exec(def a():pass))   #执行python代码
14 
15 filter(func,[1,2,3,4])      #根据前面的函数处理逻辑,依次处理可迭代回想里的每一个元素
16                             #返回true,则返回
17 print(list(filter(func,[1,2,3,4])))     #调用方式
18 map(func,[1,2,3,4])         #根据前面的函数处理逻辑,依次处理后面可迭代对象里面的每个元
19                             # 素,保存前面函数返回的所有结果
20 print(locals())             #返回局部变量
21 print(globals())            #返回所有全局变量,返回一个字典
22 print(max(111,12))          #取最大值
23 print(round(11.11,2))       #取几位小数
24 print(sorted([2,31,34,6,1,23,4]))   #排序
25 print(sorted(dic.items()))    #按照字典的key排序
26 print(sorted(dic.items(),key=lambda x:x[1]))    #按照字典的value排序

7、模块

  模块其实就是一个python文件,导入模块的本质是把Python文件从头到尾执行一遍

#模块导入方式
import os #方法一,导入整个模块
os.path.exists(‘xxx‘) #调用os下的函数

from os import path #方法二,直接调用os下的某个函数

from day5.model import hello #导入day5文件夹下的model文件中的hello方法
hello()

   random模块

1 import random
2 print(random.random())        # 随机浮点数,默认取0-1,不能指定范围
3 print(random.uniform(1, 5))     # 随机取浮点数,可以指定范围
4 print(random.randint(1, 20))    # 随机整数
5 print(random.randrange(1, 20))   # 随机产生一个range
6 print(random.choice([1,2,3,4,5]))  # 随机取一个元素
7 print(random.sample([1,2,3,4,6], 3))  # 从序列中随机取几个元素,返回的是一个list
8 x = [1, 2, 3, 4, 5, 6]
9 random.shuffle(x)            # 洗牌,打乱顺序,会改变原list的值

  json模块

  json和python的字典类型,但是json里面只能是双引号,不能是单引号,可以通过在线格式验证来判断格式。

1 import json
2 
3 print(json.dumps(dic))      # 把字典转成json串
4 print(json.loads(s_json))   # 把json串转换成字典
5 
6 print(json.dump(dic, f))  # 把字典转换成的json串写到一个文件里面
7 print(json.load(f))  # 从文件中读取json数据,然后转成字典

 

python--函数(二)、装饰器、

标签:dict   max   它的   json   return   for   本质   ems   通过   

原文地址:http://www.cnblogs.com/wanghl-3115/p/7029473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!