python函数 + 进程和线程的区别和联系 + 并发编程

函数语法+基础使用

语法

def 函数名([参数]):
    语句块
    [return] 

基础使用 - format[格式化]

def printinfo(name, age):
    print('Name:{0},Age:{1}'.format(age, name))
    print("name:{0},age:{1}".format(age, name))


printinfo(age=8, name='小马')  # Name:小马,Age:8

函数的可变参数

单纯的存入参数

def test(arg1):
    print(arg1)

test(12)
# 输出:12 

变成元组

一个*号,变成元组

def test(arg1, *arg2):
    print(arg1, arg2)

test(12, 23, 34, 34)

# 输出:12 (23, 34, 34)

变成字典

俩个*号,变成字典,同时注意传入参数的类型

def test(arg1, *arg2, **arg3):
    print(arg1, arg2, arg3)

test(12, 23, 34, 34, a = 12, b = 23)

#输出:12 (23, 34, 34) {'a': 12, 'b': 23}

函数的返回

def add(a, b):
    return a+b

print(add(12, 34))
print(add([1, 2, 3], [4, 5, 6]))
'''输出结果:
46
[1, 2, 3, 4, 5, 6]
'''

函数中的%

  • %.2f 可以输出价格
  • 也可以用逗号直接输出对应的结果

用上者的理由:方便啊,如果要传入好几个参数,一个个分开用逗号,超级不方便

def discounts(price, rate):
    final_price = price * rate
    return final_price


old_price = float(input('请输入原价:'))  # 98
rate = float(input('请输入折扣率:'))  # 0.9
new_price = discounts(old_price, rate)
print('打折后价格是:%.2f' % new_price)  # 88.20
print('打折后价格是:', new_price)  # 88.2

函数中的全局变量-global

num = 1
def test():
    global num
    print(num) # 1
    num = 123
    print(num) #123

test()
print(num) #123

函数的多层调用

  • 不可以直接调用到函数(num1)里面的函数(num2)
  • 可以在大函数(num1)里面调用内置函数(num1)
  • 最后只用调用最大的函数(num1
def num1():  #num1在这里调用
    print("num1在这里调用")
    def num2():
        print("num2开始调用!")
    num2()   #num2开始调用!

num1()
'''
num1在这里调用
num2开始调用!
'''
# num2() 无法直接调用

函数的闭包

  • 都是通过get返回值
def make_counter(init):
    counter = [init]
    def inc(): counter[0] += 1
    def dec(): counter[0] -= 1
    def get(): return counter[0]
    def reset(): counter[0] = init
    return inc, dec, get, reset

inc, dec, get, reset = make_counter(0)
inc()
inc()
inc()
print(get())  # 3
dec()
print(get())  # 2
reset()
print(get())  # 0

用nonlocal改变闭包里面的值

  • 直接把num的值改变了,最后的值也变成了修改值333
def a():
    num = 100
    def b():
        nonlocal num
        num = 333
        print(num) # 333
    b()
    print(num) #333
a()

函数的递归调用

递归和之前c与Java使用是一样的

def fun(n):
    if n == 1:
        return 1
    if n == 2:
        return 1
    return fun(n-1)+fun(n-2)

n = int(input("please input the num of 'n': "))
print(fun(n))

函数的匿名类

num = lambda arg1, arg2: arg1+arg2
print(num(12, 34))
# 46

函数的匿名类和混合使用

num1 = lambda i: i%2 == 1
num2 = filter(num1,[1,2,3,4,4,5,6,7,8,9])
print(list(num2))
# [1, 3, 5, 7, 9]

面试题:进程和线程的区别和联系?

进程 - 操作系统分配内存的基本单位 - 一个进程可以包含一个或多个线程
线程 - 操作系统分配CPU的基本单位

并发编程(concurrent programming)

  1. 提升执行性能 - 让程序中没有因果关系的部分可以并发的执行
  2. 改善用户体验 - 让耗时间的操作不会造成程序的假死
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bessie_Lee_gogogo

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值