执行字符串eval
eval() 把字符串中的列式执行,使用这种方式,可以将字符串转换成为其他类型的数据
a = "1 + 1"
print(eval(a))
b = '1 > a'
print(eval(b))
转换成为字符串json
[] 数组 {}表示对象
使用json的dumps方法,可以将字典、列表或者元组转换成为字符串
字典通过json转为str类型,叫做json字符串
import json #dumps方法
person = {'name': '胡冠雨', 'age': 18}
per_str = json.dumps(person)
print(per_str)
new_person = json.loads(per_str)
print(new_person)
print(type(new_person))
使用json的loads方法,可以将格式正确的字符串转换成为字典、列表
x = '{"name": "zhangsan", "age": 18}' #loads方法
person = json.loads(x)
print(person) # {'name': 'zhangsan', 'age': 18}
print(type(person)) # <class 'dict'>
y = '[1, 9, 0, 4, 7]'
nums = json.loads(y)
print(nums) # [1, 9, 0, 4, 7]
print(type(nums)) # <class 'list'>
函数
把一些使用率比较高的,书写难度较大,结构内容比较固定的代码, 会使用容器存着
用的时候拿出容器,不用的时候放一边
这样的放着代码的容器,我们叫做函数
定义和调用
格式: def 函数名(): 下面接代码
def 函数名():
代码
函数 和方法一样,都需要调用,并且函数在写完以后,不会输出任何东西
调用方法:: x.函数名()
函数的参数
形式参数:函数名后面的小括号里面的变量…就是一个在定义函数的时候定义的参数
实际参数:我们的调用函数式传入的真实的值…就是在使用数据时,传入的数据
位置参数:按照参数位置进行数据匹配
关键字参数:根据键值对前面的键进行匹配
- 在定义函数的时候,小括号里写等待赋值的变量名 (形参)
- 在调用函数的时候,小括号里写真正要进行运算的数据(实参)
def test(a, b):
print(a, b)
test(1, 2) # 位置参数 1, 2
test(b=1, a=2) # 关键字参数 2 , 1
test(2, b=1) #关键字参数要写在位置参数之后 2 , 1
# test(b=1,2) # 关键字参数写在位置参数之前会导致出错
函数的返回值
当函数运行一个函数完毕之后,需要把程序的运行结果回调给调用者
调用者可以拿着结果进行其他操作
关键字为return,只要函数中代码执行到return,那么这个函数直接结束,不在继续运行.(有点类似于break,都是直接结束)
def add2num(a, b):
return a + b # return 后可以写计算表达式
a = add2num(1, 2)
print(a)
函数的嵌套使用
一个函数里面又调用了另外一个函数,这就是所谓的函数嵌套调用
如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置
#嵌套使用,互相调用,最后会报错,因为栈溢出了
def showA():
print("A")
showB()
def showB():
print("B")
showA()
showB()
一些练习
# 拿着两个求出来的值进行大小比较
def get_sum(a, b):
""" 注释文本
这是一个求两个数字的和的方法
:param a: 位置参数 接受第一个传递过来的值 尽量是number类型
:param b: 位置参数 接受第二个传递过来的值 尽量是number类型
:return: 将两个参数的和返回
"""
return a + b
x = get_sum(5, 6)
y = get_sub(20, 8)
print(x if x > y else y)
print(help(get_sum))
# 打印自定义行数的横线
def print_lines(line_num):
i = 0
while i < line_num:
print("-" * 30)
i += 1
print_lines(10)
# 创建一个求长方形面积和周长的函数
def get_rectangle(length, width):
print("长方形的面积为: %s" % (length * width))
print("长方形的周长为: %s" % ((length + width) * 2))
get_rectangle(8, 2)