Python

Python的基础知识之函数

2020-03-05  本文已影响0人  摸着石头过河_崖边树
一、基本概念

函数是什么? 通俗的来讲就是包括函数名 + 函数体并实现一个功能的代码块,重点是一个代码块 基本格式

  def  xxx():       # 函数名
         print('xxxx')      # 函数体
tmpdir__17_9_7_15_04_07.jpg
二、函数的参数
2.1.函数的多个参数
def sumMoreParam(num1, num2):
    print(num1 + num2)
sumMoreParam(2, 3)
2.2.函数的参数不定长参数

方式一:参数前面增加一个* 表示参数就是元祖类型, 因为元祖有序不可变

def mySum(*args):
    print(args, type(args))
mySum(1, 2, 3, 4)

方式二:参数前面增加两个** 表示参数就是字典类型

def mySum(**kwargs):
    print(kwargs, type(kwargs))
mySum(key1=1, key2=2, key3=3, key4=4)

不定长参数有2个概念
装包:把传递来的参数,包装成一个集合的形式,比如元祖、字典
拆包:把集合的参数分解成个体

def mySum(*args):
    print(len(args), *args)  # 拆包
mySum(1, 2, 3, 4)  # 装包
2.3.函数的缺省参数,参数默认值
def hate(somebody='凯尔'):
      print('我想打', somebody)
hate()
2.4函数的注意事项 python里面只有地址传递(引用传递) 参数是可变的可以修改, 不可变的不能更改
b = 10
print('b之前地址---', id(b), b)
 def change(num):
      num = num + 2
  print('num的地址-----', id(num), num)
change(b)
print('b之后地址---', id(b), b)
结果:
b之前地址--- 4401873264 10
num的地址----- 4401873328 12
b之后地址--- 4401873264 10

参数是可变的可以修改

b = [1, 3, 4]
print('b之前地址---', id(b), b)
def change(num):
      num.append(4)
print('num的地址---', id(num), num)
change(b)
print('b之后地址---', id(b), b)
结果:
b之前地址--- 4333161736 [1, 3, 4]
num的地址--- 4333161736 [1, 3, 4, 4]
b之后地址--- 4333161736 [1, 3, 4, 4]
2. 5函数的使用说明
def mySum(*args):
"""
这里函数说明
"""
pass
2. 6偏函数

方式一 :自己创建这个函数就是一个偏函数

def test1(a, b, c, d=1):
    print(a + b + c + d)

def test2(a, b, c=2, d=2):
    test1(a, b, c, d)
test2(1, 2)

方式二: 系统快速创建偏函数

def test1(a, b, c, d=1):
    print(a + b + c + d)
import functools
test3 = functools.partial(test1, c=2, d=2)
test3(1, 2)

偏函数的使用场景

import functools
a = "10010"
int2 = functools.partial(int, base=2)
int10 = functools.partial(int, base=10)
print(int2(a), int10(a))
2.7高阶函数 - 函数作为另一个函数的参数
list = [{"name": 'lz', 'age': 18}, {"name": 'zlz', 'age': 34}, {"name": 'xlz', 'age': 27}]
def getKey(item):
    return item['age']
result = sorted(list, key=getKey)
print(result)
2.8高阶函数 - 返回函数
def computeFunc(flag):
    def __sum(a, b):
        return a + b
    def __jian(a, b):
        return a - b
if flag == '+':
    return __sum
else:
    return __jian
 getFunc = computeFunc('+')
 print(getFunc(1, 2))
2.9 高阶函数-匿名函数 - lambda函数 没有return :之后的表达式就是返回值
print((lambda x, y: x + y)(1, 2))

noname = lambda x, y: x * y
print(noname(2, 4))

list = [{"name": 'lz', 'age': 18}, {"name": 'zlz', 'age': 34}, {"name": 'xlz', 'age': 27}]
result = sorted(list, key=lambda item: item['age'])
print(result)

如果需要了解更多Python知识,请查看
Python的基础知识之生成器
Python的基础知识之装饰器
Python的基础知识之迭代器

最后赠言

学无止境,学习Python的伙伴可以多多交流

上一篇 下一篇

猜你喜欢

热点阅读