ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

阿里天池训练营学习笔记(三)

2021-01-27 20:33:43  阅读:200  来源: 互联网

标签:__ name 训练营 笔记 other 参数 print 天池 self


阿里天池训练营学习笔记

学习链接~AI训练营Python

本博文主要内容为——Python函数篇

还是老规矩,先上本文的思维导图,然后是具体知识点介绍,各位老铁在看的时候先看思维导图;在看下文的时候,大家如果觉得这部分知识比较熟悉,那可以直接跳过。
Python函数篇

函数

1.函数的定义

  • 函数以def关键词开头,后接函数名和圆括号()。
  • 函数执行的代码以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None

2. 函数参数

从简到繁的参数形态如下:

  • 位置参数 (positional argument)
  • 默认参数 (default argument)
  • 可变参数 (variable argument)
  • 关键字参数 (keyword argument)
  • 命名关键字参数 (name keyword argument)
  • 参数组合

注1:位置参数与默认参数

  • 位置参数顾名思义,这些参数在调用函数时位置要固定。
  • 默认参数 = 默认值,调用函数时,默认参数的值如果没有传入,则被认为是默认值。默认参数一定要放在位置参数后面,不然程序会报错。
  • Python允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值。

【例】对上面注的内容进行解释

def printinto(name, age=8)
	print('Name:{0},Age:{1}'.format(name, age))
printinto('老刘') # Name:老刘,Age:8
printinto('老刘',10) # Name:老刘,Age:10

def printinfo(name, age):
    print('Name:{0},Age:{1}'.format(name, age))
printinfo(age=8, name='老刘')  # Name:老刘,Age:8

注2:可变参数与关键字参数

  • 可变参数就是传入的参数个数是可变的,可以是 0, 1, 2 到任意个,是不定长的参数。
  • **kw - 关键字参数,可以是从零个到任意个,自动组装成字典。

「可变参数」和「关键字参数」的同异总结如下:

  • 可变参数允许传入零个到任意个参数,它们在函数调用时自动组装为一个元组 (tuple)。
  • 关键字参数允许传入零个到任意个参数,它们在函数内部自动组装为一个字典 (dict)。

【例】

def printinto(arg1, *args):
    print(arg1)
    for item in args:
        print(item)
        
printinto(10)
#10
printinto(10,20,30,40,50)
# 10
# 20
# 30
# 40
# 50

3.函数的返回值

【例】

def printme(str):
    print(str)

temp = printme('hello') # hello
print(temp) # None
print(type(temp))  # <class 'NoneType'>

匿名函数的应用

匿名函数 常常应用于函数式编程的高阶函数 (high-order function)中,主要有两种形式:

  • 参数是函数 (filter, map)
  • 返回值是函数 (closure)
  • filtermap函数中的应用

【例】filter(function, iterable) 过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

odd = lambda x: x % 2 == 1
templist = filter(odd, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print(list(templist))  # [1, 3, 5, 7, 9]

【例】map(function, *iterables)根据提供的函数对指定序列做映射。

m1 = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
print(list(m1))  
# [1, 4, 9, 16, 25]

m2 = map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
print(list(m2))  
# [3, 7, 11, 15, 19]

类与对象

这部分知识与C++中的类与对象部分类似,故在此不再赘述。
详见Task 3:Python基础进阶

【例】self用法

Python 的 self 相当于 C++ 的 this 指针。

class Ball:
    def setname(self,name):
        self.name = name
    def kick(self):
        print('%s竟然敢踢我' % self.name)
a = Ball()
a.setname("球A")
a.kick()
#球A竟然敢踢我

# Python 的魔法方法(__init__)
class Ball:
    def __init__(self,name):
        self.name = name
    def kick(self):
        print('%s竟然敢踢我' % self.name)
a = Ball("球A")
a.kick()
#球A竟然敢踢我

魔法方法——一种强大的面向对象编程方法

具体内容详见Task 3:Python基础进阶

总结

  1. 算术运算符
  • __mul__(self, other)定义乘法的行为:*
  • __truediv__(self, other)定义真除法的行为:/
  • __floordiv__(self, other)定义整数除法的行为://
  • __mod__(self, other) 定义取模算法的行为:%
  • __divmod__(self, other)定义当被 divmod() 调用时的行为
  • divmod(a, b)把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)
    • __mul__(self, other)定义乘法的行为:*
  • __truediv__(self, other)定义真除法的行为:/
  • __floordiv__(self, other)定义整数除法的行为://
  • __mod__(self, other) 定义取模算法的行为:%
  • __divmod__(self, other)定义当被 divmod() 调用时的行为
  • divmod(a, b)把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)
  1. 反算术运算符
  • __pow__(self, other[, module])定义当被 power() 调用或 ** 运算时的行为
  • __lshift__(self, other)定义按位左移位的行为:<<
  • __rshift__(self, other)定义按位右移位的行为:>>
  • __and__(self, other)定义按位与操作的行为:&
  • __xor__(self, other)定义按位异或操作的行为:^
  • __or__(self, other)定义按位或操作的行为:|
  1. 增量赋值运算符
  2. 一元运算符
  3. 属性访问
  4. 描述符
  5. 定制序列
  6. 迭代器
  • iter() 与 next()
  1. 生成器
  • yield

3-9部分知识目前还未接触过,等遇到的时候再来此处进行补充。

【例】用生成器实现斐波那契数列。

def libs(n):
    a=0
    b=1
    while True:
        a,b = b, a+b
        if a > n:
            return
        yield a
for each in libs(1000):
    print(each, end=' ')
#1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 

----------------手动分割线----------------
至此Task3内容全部更新完成,Task1—Task3算是初步了解了Python这一门十分强大的编程语言,Task4是一个实践作业,之后我会将自己的作业进行更新~

能看到此处的老铁一定是铁粉了,再一次感谢各位老铁的支持,你们的支持是对我最大的鼓励!之后我会陆陆续续复盘自己参加各项比赛的经历(其中有数学建模国赛、互联网+大赛、蓝桥杯大赛、统计建模比赛等),将这些内容分享到自己的博文中,我的一家之言欢迎大家不吝赐教。

2021/1/27 晚
刘大炮

标签:__,name,训练营,笔记,other,参数,print,天池,self
来源: https://blog.csdn.net/onlyme321/article/details/113250983

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有