Python 强化训练:第五篇

强化训练:第五篇


主题:函数

  1. 基本定义方法
  2. 任意数量参数
  3. 只接受关键字参数
  4. 显示数据类型
  5. 默认参数
  6. 匿名函数
  7. N个参数的可调用对象

0. 基本定义

def hanshu(*args):
    return sum(args)

print(hanshu(1, 2, 3, 4))    # 10

1. 任意数量参数

def avg(first, *args):
    return (first + sum(args))/(1 + len(args))

print(avg(3, 2, 3, 1))    # 2.25
print(avg(3, 4))    # 3.5

2. 关键字参数

def keywords(number, *, newnumber):
    return (number + newnumber)

print(keywords(3, newnumber=5))    # 8
#print(keywords(3, 2))   # wrong

3. 数据类型

def type_number(a:int, b:int)->int:
    return (a+b)

print(type_number(3, 4))    # 7
print(help(type_number))    
#Help on function type_number in module __main__:

#type_number(a:int, b:int) -> int

#None

4. 返回多个值

def larger_number(*args, **kwargs):

    return args, kwargs

print(larger_number(1, 2, 3, 4, a=1, b=2, c=3))
# ((1, 2, 3, 4), {'c': 3, 'b': 2, 'a': 1})

5. 默认参数

def define_key(*args, b=1156143589):
    return args, b

print(define_key(1, 2, 3, 4))
print(define_key(1, 2, 3, 4, 5, b=12))
#((1, 2, 3, 4), 1156143589)
#((1, 2, 3, 4, 5), 12)

6. 匿名函数/ 匿名函数绑定值

lam= lambda x, y: x + y

print(lam(2, 3))    # 5

lam_2= lambda x, y=2: x**y

print(lam_2(3))    # 9

lam_3 = lambda x=3, y=3: x==y

print(lam_3())    # True
print(lam_3(2))    # False
print(lam_3(2, 2))    # True

7. 减少可调用对象的参数个数

def define_seven(a, b, c, d):

    return (a, b, c, d)

print(define_seven(1, 2, 3, 4))
# (1, 2, 3, 4)

from functools import partial
seven = partial(define_seven, d=4)
print(seven(1, 2, 3)) # (1, 2, 3, 4)
seven_1 = partial(define_seven, 1)
print(seven_1(1, 2, 3))  #(1, 1, 2, 3)
seven_2 = partial(define_seven, 1, 2)
print(seven_2(1, 2))    #(1, 2, 1, 2)
from datetime import datetime, timedelta


def GetNextDay(baseday,n):
    return str((datetime.strptime(str(baseday),'%Y-%m-%d')+timedelta(days=n)).date())
for i in range(1, 8):
    NextDay = partial(GetNextDay, '2016-11-04')
    print(NextDay(i))
    
# 2016-11-05
# 2016-11-06
# 2016-11-07
# 2016-11-08
# 2016-11-09
# 2016-11-10
# 2016-11-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老司机的技术博客

golang学习笔记2:基本结构与数据类型

除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符,其中包含了基本类型的名称和一些基本的内置函数。

11040
来自专栏mukekeheart的iOS之旅

OC学习10——内存管理

1、对于面向对象的语言,程序需要不断地创建对象。这些对象都是保存在堆内存中,而我们的指针变量中保存的是这些对象在堆内存中的地址,当该对象使用结束之后,指针变量指...

24250
来自专栏和蔼的张星的图像处理专栏

548. 两数组的交 II 排序+双指针

样例 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].

10820
来自专栏IT可乐

深入理解计算机系统(3.5)------特殊的算术操作指令

  在上一篇博客 算术和逻辑操作 我们介绍了如下图几种常用的算术逻辑指令,但是大家发现没,这几种指令如果在 IA32 上只能操作32位寄存器,比如我用乘法指令I...

21270
来自专栏ml

hdu 3518 (后缀数组)

  题目描述:   找出一个字符串中至少重复出现两次的字串的个数(重复出现时不能重叠)。   code:      后缀数组处理,对于得到height 进行查找...

36040
来自专栏数据结构与算法

P1198 [JSOI2008]最大数

题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。 限制:...

30990
来自专栏程序员同行者

python 变量进阶(理解)

13030
来自专栏不想当开发的产品不是好测试

java匿名内部类

show the code : package com.test.jwen.httpApiAuto; public class AInter { publ...

23770
来自专栏pangguoming

ES6的Promise

相信凡是写过javascript的童鞋也一定都写过回调方法(callback),简单说回调方法就是将一个方法func2作为参数传入另一个方法func1中,当fu...

29630
来自专栏Python小屋

黑客走开系列1:Python使用元组做函数实参让代码更安全!

在Python内置对象中,列表、字典、集合属于可变序列,作为函数实参是不安全的,尤其是调用别人写好的恶意函数或者调用被人恶意修改过的函数时,很容易被修改实参。而...

28970

扫码关注云+社区

领取腾讯云代金券