Python学习—(4)Python函数

函数

1.函数基础

def printinfo(name):
    '''
    函数说明
    :return:
    '''
    print('1的名字%s'%name)
    print('2')
    print('3')
    print('4')
    pass

# 函数调用
printinfo('zqz')

1的名字zqz
2
3
4

2.函数参数

(1)必选参数

def sum(a,b): # 形参,无实际意义
    sum=a+b
    print(sum)
    pass

sum(1,2) # 实参,占用内存地址
print()
# sum() #没给参数赋值,报错

3

(2)默认参数

def sum1(a = 20,b = 30):
    print('默认参数%d'%(a+b))
    pass
sum1() # 调用时未赋值,使用默认值
sum1(10) # 给第一个参数赋值,第二个仍用默认值
sum1(10, 20) # 给两个参数都赋值

默认参数50
默认参数40
默认参数30

(3)可变长参数

def sumabs(*args):
    print(args) # args是元组类型
    pass
sumabs(1)
sumabs(1, 'd')

(1,)
(1, ‘d’)

(4)关键字可变参数

def keyfunc(**kwargs): # 字典类型
    print(kwargs)
    pass
keyfunc()
dictA={'name': 'jkl'}
keyfunc(**dictA)
keyfunc(height=30)

{}
{‘name’: ‘jkl’}
{‘height’: 30}

(5)参数的混合使用

def complexfunc(*args, **kwargs):
    print(args)
    print(kwargs)
    pass
complexfunc()
complexfunc(1, 2, age=25)
complexfunc({'name': 'ghu'})
complexfunc(**{'name': 'ghu'})

()
{}
(1, 2)
{‘age’: 25}
({‘name’: ‘ghu’},)
{}
()
{‘name’: ‘ghu’}

3.函数返回值

def Sum(a, b):
    sum = a + b
    return sum # 将计算的结果返回
    return sum - 1
    pass

rs = Sum(10, 20) # 计算结果返回到调用的地方
print(rs)

30

4.函数的嵌套调用

def fun1():
    print('开始执行1')
    print('代码')
    print('结束执行')
    pass
    
def fun2():
    print('开始执行2')
    fun1()
    print('结束执行')
    pass
    
fun2()

开始执行2
开始执行1
代码
结束执行
结束执行

5.函数的全局变量和局部变量

# 局部变量: 函数内部定义的变量, 作用域在函数内部
pro = 'cs' # 全局变量
name = 'qwe'

def printinfo():
    name = 'jkl' # 全局变量和局部变量重复定义,优先执行内部定义变量
    print('printinfo的打印:', name, pro)
    pass

def TJ():
    print('TJ的打印:', name)
    pass

def yim():
    name = 'uio'
    print('yim的打印:', name, pro)
    pass

def changeglob(): # 修改全局变量,关键字global
    global pro
    pro = 'gis'
    pass

changeglob()
print('全局变量:', pro)
printinfo()
TJ()
yim()

全局变量: gis
printinfo的打印: jkl gis
TJ的打印: qwe
yim的打印: uio gis

6.函数参数引用传值

(1)不可变类型

a = 1 # 不可变类型
def func(x):
    print('x值地址{}'.format(id(x)))
    x=2
    print('x值修改之后的地址{}'.format(id(x)))
    print(x)
    pass
print('a的地址:{}'.format(id(a)))
func(a)
print('a的值:{}'.format(a))
print('a的地址:{}'.format(id(a)))

a的地址:2301912443184
x值地址2301912443184
x值修改之后的地址2301912443216
2
a的值:1
a的地址:2301912443184

(2)可变类型

li = [98]
def tE(params):
    li.append(35) # 对列表操作,则在原来的基础上操作
    # global li
    # li=[35] # 若是对全局变量进行修改,重新分配内存
    print('li修改之后的地址:{}'.format(id(li)))
    print('params的地址:{}'.format(id(params)))
    print('params的值:{}'.format(params))
    pass
print('li的地址:{}'.format(id(li)))
tE(li)
print('li的值:{}'.format(li))

li的地址:2302100200960
li修改之后的地址:2302100200960
params的地址:2302100200960
params的值:[98, 35]
li的值:[98, 35]

7.匿名函数

# 匿名函数
M = lambda x, y : x+y # 通过变量去调用和接收
print(M(23, 87))

# 替代传统双分支
rs = lambda x, y : x if x > y else y
print(rs(2, 5))

110
5

8.递归函数

# 递归函数:阶乘
def dg(n):
    if n == 1:
        return 1
    else:
        return n * dg(n - 1)
    pass

print(dg(4))

24

9.内置函数

(1)取绝对值

print('绝对值:', abs(-5))

绝对值: 5

(2)取近似值

print('近似值:', round(3.193, 1))

近似值: 3.2

(3)指数运算

print('指数运算:', pow(2, 3))

指数运算: 8

(4)取最大值

print('求最大值:', max([23, 154, 8]))
print('求最大值:', max('abc'))

求最大值: 154
求最大值: c

(5)求商和余数

print('求商和余数:', divmod(8, 3))

求商和余数: (2, 2)

(6)求和

print('求和:', sum([0, 1, 2], 6))

求和: 9

(7)执行字符串表达式的值

a, b, c = 1, 2, 3
print('求字符串表达式的值:', eval('a + b - c'))

求字符串表达式的值: 0

(8)进制转换函数

print('二进制:', bin(11)) # 二进制
print('十六进制:', hex(22)) # 十六进制

二进制: 0b1011
十六进制: 0x16

(9)类型转换函数

# 元组转换为列表
tup = (1, 2)
li = list(tup)
print('将元组转换为列表:', li)
# 将列表转换为元组
tu = tuple(li)
print('将列表转换为元组:',tu)
# 转换为字典形式
dic = dict(a=1, b='l')
print('字典dic:', dic)

将元组转换为列表: [1, 2]
将列表转换为元组: (1, 2)
字典dic: {‘a’: 1, ‘b’: ‘l’}

10.序列操作

(1)all()

# all()
print(all([]))
print(all(()))
print(all([0, 1, 2]))
print(all([False, 1, 2]))
print(all(['', 1, 2]))

True
True
False
False
False

(2)any()

print(any([0, 1]))
print(any([0, False]))

True
False

(3)sort排序

li = [1, 58, 46]
li.sort()
print('li排序后:', li)

li排序后: [1, 46, 58]

(4)sorted排序

li1 = [1, 87, 56]
print('li1排序前', li1)
sorted(li1)
print('li1排序后', li1) # 不是在原来的基础上修改,返回一个新的列表
vs = sorted(li1, reverse=True) # 接受新列表
print('列表vs:', vs)

li1排序前 [1, 87, 56]
li1排序后 [1, 87, 56]
列表vs: [87, 56, 1]

(5)打包操作

s1 = [1, 2, 3]
s2 = [4, 5, 6, 7]
print('打包s1:', list(zip(s1)))
print('打包s1和s2:', list(zip(s1, s2)))

打包s1: [(1,), (2,), (3,)]
打包s1和s2: [(1, 4), (2, 5), (3, 6)]

(6)同时列出数据项和下标

litu = ['a', 'b', 'c']
print(tuple(enumerate(litu, 3))) # 3表示起始下标

((3, ‘a’), (4, ‘b’), (5, ‘c’))

11.集合

(1)创建集合

set1 = {1, 2, 3}

(2)强制类型转换

li = [1, 2, 3]
set_x = set(li)
print('将列表转换为元组:', set_x)

将列表转换为元组: {1, 2, 3}

(3)添加操作

set1.add('jkl')
print('将元组set1添加后:', set1)

将元组set1添加后: {1, 2, 3, ‘jkl’}

(4)清空操作

set1.clear()
print('将元组set1清空后:', set1)

将元组set1清空后: set()

(5)差集操作

set2 = {1, 2, 3}
set3 = {1, 3, 4}
ghu = set2.difference(set3)# set2有的,set3没有
print('set2和set3的差集:', ghu)

set2和set3的差集: {2}

(6)交集操作

ty = set2.intersection(set3)
print('set2和set3的交集:', ty)

set2和set3的交集: {1, 3}

(7)并集操作

ty1 = set2.union(set3)
print('set2和set3的并集:', ty1)

set2和set3的并集: {1, 2, 3, 4}

(8)从集合中随机拿走数据并在集合中删除

qwe = set2.pop()
print('随机拿走的数据:', qwe)
print('随机拿走的数据后的set2:', set2)

随机拿走的数据: 1
随机拿走的数据后的set2: {2, 3}

(9)移除指定元素

set3.discard(1)
print('移除指定元素后的set3:', set3)

移除指定元素后的set3: {3, 4}

(10)集合的更新

set2.update(set3)
print('将set3更新到set2的set2:', set2)

将set3更新到set2的set2: {2, 3, 4}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值