Python编程用法——Python函数

函数定义

Python通过def定义函数,函数主体以Tab键或四个空格开始,不一定紧挨上一行。但需要严格遵从格式,若不是以Tab或四个空格开始,运行会报错
在这里插入图片描述

def TestFunc():
    print("Test func")

执行结果

Test func

获取函数名

获取函数名有两种方法,函数内获取的方法需要sys模块

执行结果

import sys
def TestFunc():
    print("Test func:",sys._getframe().f_code.co_name)

TestFunc()
print("get name:",TestFunc.__name__)
Test func: TestFunc
get name: TestFunc

匿名函数lambda

通过简短的函数形式,不用直接定义函数名,在代码中嵌入函数,关键字lambda
传参为x,返回值为 x * x

    List = list(map(lambda x: x * x, range(2,8)))
    print(List)

执行结果

[4, 9, 16, 25, 36, 49]

函数传参

默认参数

函数传参可以与C++一样支持设置默认参数

def DefaultFunc(x,y = 3):
    print("num add :",x + y )
	
DefaultFunc(4)
DefaultFunc(2,6)

执行结果

num add : 7
num add : 8

可变参数

C/C++通过函数定义 … 来传入可变参数,但Python更灵活,与C/C++一样,可变参数按照传入的先后顺序获取。

def DynamicFunc(*valueArray):
    
    for value in valueArray:
        print("value :",value )

    print("Func end")
	
DynamicFunc(2)
DynamicFunc(2,3,5,7,11,13)

Nums1 = [17,19,23,29]
Nums2 = (31,37,39,41)
DynamicFunc(*Nums1)
DynamicFunc(*Nums2)

执行结果

value : 2
Func end
value : 2
value : 3
value : 5
value : 7
value : 11
value : 13
Func end
value : 17
value : 19
value : 23
value : 29
Func end
value : 31
value : 37
value : 39
value : 41
Func end

在可变参数的基础上,可以指定定义的参数名以及指定具体的参数名。可变参数是将所有的参数装入一个list或tuple中,而指定参数是将这些参数装入一个dict中

def SpecificFunc1(x,y,**other):
    
    print("x:",x)
    print("y:",y)
    print("other:",other)
        
    if "value1" in other:
        print("value1 in other")
    else:
        print("value1 not in other")

    print("Func end")
	
SpecificFunc1(2,3,value1 = 5,value2 = "Python test")	
SpecificFunc1(7,11,value3 = 'A',value4 = 13)	

执行结果

x: 2
y: 3
other: {'value1': 5, 'value2': 'Python test'}
value1 in other
Func end
x: 7
y: 11
other: {'value3': 'A', 'value4': 13}
value1 not in other
Func end

指定参数

在可变参数的基础上,指定参数的变量名,不对应的运行将会报错

def SpecificFunc2(x,y,*value,value1,value2):
    
    print("x:",x)
    print("y:",y)
    print("value1:",value1)
    print("value2:",value2)
    print("value:",value)

    print("Func end")
	
SpecificFunc2(2,3,5,7,11,value1 = 13,value2 = "Python test")	

执行结果

x: 2
y: 3
value1: 13
value2: Python test
value: (5, 7, 11)
Func end

传入非法参数
在这里插入图片描述

函数返回

返回变量

函数可以返回一个或多个变量

def TestFuncreturn1():
    return 3

def TestFuncreturn2():
    return 5,'E',list(range(10))

print(TestFuncreturn1())
print(TestFuncreturn2()

执行结果

3
(5, 'E', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

返回函数

返回函数不能是匿名函数,否则就等于返回该函数本身

def TestFuncreturn3(x = 1): 
    addValue = 2
    def add():
        return x * (x + addValue)
    
    return add

def TestFuncreturn4(x = 1):
    addValue = 2
    return lambda x : x * (x + addValue)

func1 = TestFuncreturn3(3)
func2 = TestFuncreturn4(3)

print(func1(),func1(1), func2(1))

执行结果

15 16 3

内置函数

filter函数

过滤函数filter,通过特定条件过滤掉列表中的元素,返回一个新的列表

获取20以内的奇数

    List = list(filter(lambda x: x % 2 != 0,range(20)))
    print(List)

执行结果

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

sorted函数

Python的排序函数,默认按照ASCII码从小到大排序,也可以通过制定序列排序

    print(sorted(['g','r','V','T','m','H','D']))
    #转换大写并反序
    print(sorted(['g','r','V','T','m','H','D'],key = str.upper,reverse=True))
    print(sorted([5,13,3,-13,-19,-31,11]))
    #绝对值排序
    print(sorted([5,9,3,-13,49,-31,11],key = abs))
    #指定特殊值排序
    print(sorted([(7,"Python"),(3,"Test"),(5,"Key")],key = lambda x:x[0]))

执行结果

['D', 'H', 'T', 'V', 'g', 'm', 'r']
['V', 'T', 'r', 'm', 'H', 'g', 'D']
[-31, -19, -13, 3, 5, 11, 13]
[3, 5, 9, 11, -13, -31, 49]
[(3, 'Test'), (5, 'Key'), (7, 'Python')]

map函数

Python的map函数与C++的定义不同,map函数是给予函数与序列的映射关系
将序列中的每个元素映射到函数中计算,并一并返回结果。

print(list(map(lambda x: x ** 2, range(10))))

for value in map(lambda x: x * 3, range(10)):
	print("map value:",value)

执行结果

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
map value: 0
map value: 3
map value: 6
map value: 9
map value: 12
map value: 15
map value: 18
map value: 21
map value: 24
map value: 27

reduce函数

Python的map函数是将序列的两个值迭代映射到函数上,并返回结果。
即将序列的前两个数传入函数,函数计算的结果将成为下一个与第三个值组成传入值。

在Python3.0以上的需要将reduce包含进代码中

from functools import reduce

#1~100的累加
print("1 + 2 + 3 + ... + 100 =",reduce(lambda x, y: x + y, range(1,101)))	

执行结果

1 + 2 + 3 + ... + 100 = 5050
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值