python基础篇 11-json 函数

json:

import json
d = {'name':'xiaohei','cars':[1,2,3],'house':(4,5,6),
     'addr':'北京','age':18,'sex':'','money':100,'msg':'ok'}
#json就是一个字符串,只不过是所有语言都能解析这个字符串



# indent 支持缩进格式化,ensure_ascii = False 能支持中文
result = json.dumps(d,ensure_ascii=False,indent=4) #pyton的数据类型转json的 #(list、tuple、dict),其中 元组 dumps后 变为 list
print(result)
print(type(result))


json_str = ' {"name": "xiaohei", "cars": [1, 2, 3], "house": [4, 5, 6]} '
dict2 = json.loads(json_str)            # json串 转为 python中字典
print(dict2)


f= open('aa.txt')
content = f.read()
d = json.loads(content)
# load 等同于 read + loads
d = json.load(f) #帮你封装了处理文件的功能



json_str = json.dumps(d,indent=4,ensure_ascii=False)
f.write(json_str)
# dump 等同于 dumps + write
json.dump(d,f,indent=4,ensure_ascii=False)  #帮你封装了处理文件的功能

hzy = [1,2,3,4]
with open('info2.json','w',encoding='utf-8') as fw:
    json.dump(hzy,fw,ensure_ascii=False,indent=4)


# 例子

# 写例子
with open('info.txt','w',encoding='utf-8') as fw:
    json.dump(d,fw,indent=4,ensure_ascii=False)

# 读例子
with open('info.txt',encoding='utf-8') as fw:
    d = json.load(fw)
    print(d)
    print(d.get('name'))
    print(d.get('money'))

函数:

1、位置参数、默认参数

#函数、方法
import string
import datetime
def hello(): #定义函数,提高代码的复用性
    print('nihao')

def baoshi():
    print('当前时间',datetime.datetime.today())

def check_password(password):#校验密码是否合格,必传参数,位置参数
    password_set = set(password)
    if password_set & set(string.digits) and password_set & set(string.ascii_lowercase) \
            and password_set & set(string.ascii_uppercase):
        return True
    return False

def write_file(file_name,content):
    with open(file_name,'w',encoding='utf-8') as fw:
        fw.write(content)

def read_file(file_name):
    with open(file_name,encoding='utf-8') as fr:
        return fr.read()


# 传参方式 关键字传参、位置传参
write_file(content='1234',file_name='a.txt')
write_file('a.txt',content='absdfs')
write_file('a.txt','12235236')


#默认值参数

def op_file(file_name,content=None):
    print(content)
    if content:
        write_file(file_name,content)
    else:
        result = read_file(file_name)
        return result

print( op_file('1.txt') )
op_file('1.txt','sdfdssgsdgsdg')

 2、参数组、关键字参数

#必传参数(位置参数)、默认值参数
#可选参数(参数组)、关键字参数
import json
def send(*args):        # 其中args是保存的是 参数元组列表    重要 重要 重要
    for p in args:
        print('发短信给xxx%s'%p)

send()
send(110)
send(110,120,119)
#可选参数,它不是必传的,不限制参数个数,它是把参数放到了一个 tuple(list)里面



#关键字参数,它不是必传的,不限制参数个数,它是把参数放到了一个字典里面,
# 但是它传参的时候必须得用关键字的方式 或者 使用 **{'key':'value'} 即 kwargs 为{'key':'value'}
def send_sms(**kwargs):         # 其中kwargs保存的是 k:v字典形式的 参数 如{xx:xx}或者  **kwargs 为:xx=xx
    print(kwargs)

send_sms()
send_sms(xzh='晚上好')
send_sms(lhh='新年好',fd='生日快乐',lyh='新婚幸福')
send_sms(**{'xiaoming':'加油'})


def nb_func(name,age,country='China',sex='',*args,**kwargs):
    #1、必填参数
    #2、默认值参数
    #3、参数组
    #4、关键字参数
    print(name)
    print(age)
    print(sex)
    print(country)
    print(args)
    print(kwargs)

nb_func('xh',18,'abc','efg','hhh',name=1,b=2,c=3)

nb_func('xh',18,'japan','nan','abc','efg','hhh','2335','23532')

 

传参例子:

# 可以位置参数传,也可以参数组传、也可以关键字传
l = ['xh',18,'nan']
d = {'name':'xh','age':18,'sex':'nan'}

def hhh(name,age,sex):
    print(name)
    print(age)
    print(sex)

def hhh1(*args,**kwargs): print(args) print(kwargs) hhh(*l)# 'xh',18,'nan' hhh(**d)#name=xh,age=18,sex=nan

 

函数返回值、全局变量、局部变量

#返回值
def
test(): print('hello') def test2(): return 1,2,3 #如果一个函数没有写返回值的话,返回的就是None #如果函数有多个返回值,那么返回的是一个元组 a,b,c = test2()

 

  全局变量

#全局变量:一般定义在代码的最上面,大家都可以用的 类似公厕  全局变量会一直占用内存,整个代码运行完 才会释放 尽量少用
#局部变量:在函数里面定义的变量,都是局部变量         函数调用的时候 才会生成局部变量,才会占用内用,函数调用完 局部变量占用内存释放,

file_name = 'a.txt'
country = 'China'

#重要 重要 重要
#list、dict、set不需要用global来声明了
#str、int、float、tuple、bool#需要的
def say():
    print(file_name)
    word = 'Nihao'
    print(country)
    print(word)

def zhucheng():
    country = 'Japan'
    print(country)

def update_file_name():
    global file_name
    file_name = 'a.json'        # 修改全局变量之前 需要先global声明

print(file_name)
update_file_name()
print(file_name)

#例子1
money = 500

def test(consume):
    return money - consume


def test1(money):
    return test(money) + money


money = test1(money)

print(money)

 

#例子2

def test():
    global a
    a = 5


def test1():
    c = a + 5
    return c

test()
res = test1()
print(res)

 

练习:判断小数

# 判断小数
def is_float(s):
    s = str(s)
    if s.count('.') == 1:
        left,right = s.split('.')

        if left.isdigit() and right.isdigit():
            return True
        if left:
            if left[0] == '-' and left[1:].isdigit() and right.isdigit():
                return True
    # return False        #非空即真 返回None 也是false 这行可以省略

 

posted @ 2021-12-22 23:07  捞铁  Views(243)  Comments(0Edit  收藏  举报