python基础四

递归调用、高阶函数、函数作用域、python内置函数、装饰器、模块、random、json串和积累

一、递归调用

  递归调用就是一个函数自己调用自己,自我调用最多调用999次。

  特性:1.必须有一个明确的结束条件;

     2.每次进入更深一层递归时,问题规模相比上次递归都应该有所减少;

     3.递归效率不高,建议少用递归

def test():
    n=int(input(‘please input a number: ‘))
    if n%2==0:
        return True
    print(‘输入的不是偶数‘)
    test()
even=test
# test()    #函数即变量,test是函数的内存地址,test()执行test函数
even()    #even和test指向的同一个内存地址,所以他们两个是一样的

二、高阶函数

  高阶函数即一个函数的入参是一个函数名(函数即变量)。

def add(x,y,z):
    res=z(x)+z(y)
    return res
print(add(‘98‘,‘100‘,int))

三、函数作用域

  函数的作用域,是就近原则,从里往外找。若是自己函数有,就直接用,若没有,就会去它父级函数里找。(注:函数只有被调用才会执行)

def warpper():#1
    name=‘西瓜‘
    def deco():#2
        name =‘草莓‘
        def he():#3
            print(‘最里面的水果是%s‘%name)
        print(‘中间的水果是%s‘%name)
        he()  #函数只有被调用才会执行
    deco()
    print(‘最外面的水果是%s‘%name)
warpper()

四、python内置函数

  1.print(bool(‘s‘))  #把一个对象转换成布尔类型

  2.int() #整型

  3.float()  #小数

  4.str()  #字符串

  5.dict()  #字典

  6.list()  #列表

  7.set()  #集合

  8.tuple()  #元组

  9.print(round(11.12345,3))  #取小数位数(例子为取3位小数)

  10.print(sorted([2,12,35,5,4,7,19],reverse=False))  #排序

  11.print(max(111,22,334,4,7,9))  #取最大值

  12.print(list(filter(func,[0,1,2,3,4])))  #根据前面的函数处理逻辑,依次处理后面可迭代对象里面的每个元素,返回true保存

  13.print(list(map(func,[0,1,2,3,4])))  #根据前面的函数处理逻辑,依次处理后面可迭代对象里面的每个元素,保存前面函数返回的结果

  14.print(dir(‘a‘))  #打印传入对象的可调用方法

  15.print(callable(func))  #判断传入的对象是否可以调用

  16.print(bin(10))  #十进制转二进制

  17.print(oct(10))  #转八进制

  18.print(hex(10))  #转十进制

  19.print(chr(98))  #打印数字对应的ascii码

  20.print(ord(‘b‘))  #打印字符串对应的ascii码

  21.print(eval(‘a=1‘))  #执行python代码,只能执行简单的,定义数据类型和运算

  22.print(exec(‘def a():pass‘))  #执行python代码

  23.print(globals())  #返回程序内所有的变量,返回的是一个字典,函数里面的局部变量不会返回

  24.print(locals())  #返回局部变量

  25.print(all([1,2,3,4]))  #判断可迭代的对象里面的值是否都为真

  26.print(any([1,2,3,0]))  #判断可迭代对象里面的值是否有一个为真

五、装饰器

  特点:函数里面嵌套定义一个函数;高阶函数。

  作用:在不改变原有函数的调用方式和入参的情况下,给函数添加新功能。

import time
def timer(func):
    def deco(*args,**kwargs):    #*args,**kwargs用来接收传入函数的参数
        start_time = time.time()
        res = func(*args,**kwargs)    #获取返回值
        end_time = time.time()
        print(‘runtime‘,end_time-start_time)
        return res
    return deco
@timer
def hello(name):
    print(‘hello %s‘%name)
    time.sleep(1)

# hello=timer(hello)  #等同于上方的@timer
hello(‘world‘)

六、模块

  模块的实质是一个python文件

# model.py

def run():
    print(‘run...‘)
def run1():
    print(‘run1***‘)
def run2():
    print(‘run2!!!‘)
name = 5
print(‘66666‘)

  模块调用的三种方式

# 方式一:
import model
model.run1()
model.run2()
model.run()

# 方式二:
from model import run,run1   #只导入某个函数的时候
run()
run1()

# 方式三:
from model import *   #从一个模块里面导入所有的函数,这种方法不建议用
run()
run1()
run2()

  导入模块的时候,python首先在当前目录下查找这个模块,如果当前目录没有该文件,那么就会去环境变量里面的目录找。若是需要调用的模块在其他目录下,有如下方法:

from model import hello
from day4.set1 import he
import sys
sys.path.append(r‘E:\byz_code‘)  #添加环境变量
print(sys.path)   #看系统环境变量
he()

七、random

  1.print(random.randint(1,20))   #随机取整数

  2.print(random.choice([1,2,3,4,5]))   #随机取一个元素(数据为可迭代对象)

  3.print(random.sample(‘hello‘,3))   #从序列中随机取几个值,返回的是一个list

  4.print(random.unform(1,999))   #随机取浮点数,可指定范围

  5.x=[1,2,3,4,5]

     random.shuffle(x)   #洗牌,打乱顺序,改变原list的值

   print(x)

  6.print(random.random())

八、json串

  json和python的字典类型相似,但是json里只能是双引号,不能是单引号。

  json串实际上是一个字符串。

  dump和dumps是字典转json

  load和loads是json转字典

jsons=‘{"name":"python","how":"i love"}‘
json_d=json.loads(jsons)   #json串(字符串)转成字典,loads方法是把json转成字典
print(json_d)

fr=open(‘users‘)
json_dict=json.load(fr)  #json串(字符串)转成字典,load方法是传入一个文件对象,然后load方法自动去读这个文件的内容,然后转成字典
print(json_dict)

d={‘admin‘: {‘password‘: ‘123456‘, ‘money‘: 80000}, ‘hhh‘: {‘password‘: ‘123456‘, ‘price‘: ‘90000‘}}
d_json=json.dumps(d)   #把字典变成json串(字符串)
print(d_json)

fw=open(‘users.json‘,‘w‘)
json.dump(d,fw)   #字典转json并写入文件

 九、积累

  import time

  now_time=time.strftime(‘%Y-%m-%d %H:%M:%S‘)   #获取当前时间

  print(now_time) 

时间: 2024-10-26 08:13:18

python基础四的相关文章

Python 基础 四

今天我们先介绍一下反射这个概念,啥是反射?反射就是自己检测自己.在我们Python的面向对象中的反射是啥意思呢?就是通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 在Python中四个产生反射的函数,分别是:hasattr();getattr();setattr();delattr(); 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) hasattr((object, name, default=None)) 判断object中有没有一个name

Python基础(四) 基础拾遗、数据类型进阶

一.基础拾遗 (一).变量作用域 外层变量,可以被内层变量直接调用:内层变量,无法被外层变量使用.这种说法在其它语言中适用,在python中除了栈以外,正常的变量作用域,只要执行声明并在内存中存在,该变量就可以在下面的代码中使用. (二).位运算符.三元运算 1,位运算符,请看下面代码 1 128 64 32 16 8 4 2 1 2 0 0 0 0 0 0 0 0 3 4 5 #!/usr/bin/env python 6 7 a=60 #00111100 (将十进制转换成二进制,进行位运算)

python基础四(模块的导入)

一.导入模块?从模块导入时,一般使用 import sys(用sys模块举例) #这种方式导入模块,要使用这个模块其中的功能,语法为模块名称**.**功能,如print(sys.path) from sys import path #这种方式导入模块要使用模块中的功能,直接功能名即可print(sys),如果要导入该模块多个功能可以以逗号隔开 from SomeMode import * #这种方式和第二种一样只是把具体的功能名换成了*(导入所有),这种方式也有弊端,假如你导入的模块都有一个名为

[python基础(四)]条件和条件语句

1.print和import1.1 print 略1.2 import(1)impore somemodule (2)from somemodule import somefunction(3)from somemodule import somefunction,anotherfunction(4)from somemodule import*(5)import somemodule as somename #为整个模块提供别名(6)from somemodule import somefun

python基础(四)运算

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python的运算符和其他语言类似 (我们暂时只了解这些运算符的基本用法,方便我们展开后面的内容,高级应用暂时不介绍) 数学运算 >>>print 1+9        # 加法 >>>print 1.3-4      # 减法 >>>print 3*5        # 乘法 >>>print 4.5/1.5   

Python基础 ( 四 )

#函数 #函数的定义 def sum1(x,y) : --> 也可不传参数或传入多个参数 'this function is used in caculation' --> 注释,可以说明此函数的信息 x = x + y return x --> 若没有返回值则(返回None)成为过程(此说明python中没意义,别的程序语言可能就有用) return 1,2,['adsf',11] 这样返回的是一个元组(1,2,['adsf',11]) #形参和实参    形参 : def sum1(

Python基础四--random,so ,sys模块

一.random 1. 产生随机小数(0,1):random.random(): 2. 产生[1,5]范围内的整数:random.randint(1,5): 3. 产生[1,5)范围内的整数:random.randrange(1,5); 4. 列表元素任意1个元素:random.choice([1,'ab',[2,3]]); 5. 列表元素任意2个组合(list):random.sample([1,'ab',[2,3]],2); 6. (1,5)之间的小数:random.uniform(1,5)

python基础(四)字符串处理

字符串处理 msg = 'my name is sylar' capitalize方法,将字符串的首字母大写 print 'capitalize方法:', msg.capitalize() swapcase方法用于对字符串的大小写字母进行转换.upper print 'swapcase方法:', msg.swapcase() print 'upper方法:',msg.upper() msq_lower = msg.upper() print 'lower方法:',msq_lower, msq_l

python基础四:装饰器

装饰器本质:就是函数,功能是为其他函数添加附加功能 装饰器原则: 不修改被修饰函数的源代码 不修改修饰函数的调用方式 装饰器的知识储备: 装饰器 = 高阶函数 + 函数嵌套 + 闭包 初识装饰器 先看一个需求:下面这个函数用来计算1到20的和 def calc(l): res = 0 for i in l: time.sleep(0.01) res += i return res result = calc(range(1,21)) print(result) 但现在需求有变,不仅要计算1到20