铁乐学Python_day09_函数

今天我们来学习函数。

产生的原由,若没有函数,会显得重复代码多,可读性差,也会造成重复造轮子的情景。

故产生了函数,用来封装好一个功能,它是以功能为导向的。

1、【函数的样式】

例如自己定义一个函数:

def my_len():

def python中的关键字,用来声明和定义一个函数;

my_len 函数名,命名规范与变量命名的一样;

def与函数名中间要隔一个空格;

函数名+"()"+":",括号加冒号,括号里填的要你想要设置函数调用者传递的参数;

紧接着就是缩进的函数体(主要功能实现部分);

例,以下自定义的计算可迭代对象元素长度的函数:

my_len():
def my_len(l):
    count = 0
    for i in l:
        count += 1
    return count

li = [1, 2, 3, 4, 5]
print(my_len(li))

函数的执行,函数名+"()"就会去调用执行。

函数的返回值,定义函数时,不要在函数中写print语句(调试的时候可以这么做),因为函数是以功能为导向的,需要返回输出的值时使用return将值返回给函数的调用者就可以了。

在函数当中遇到return时就会结束执行函数(结合if语句用就会有像循环中break的感觉)。

函数返回的值有以下几种:

1)无return语句,返回None;

2)使用了return,返回None;

3)return指定返回一个值,该值是什么,就直接返回给函数调用者;

4)return返回多个值,将多个值放置到一个元组中,返回给函数调用者。

2、【三元运算】

例,在以下自定义一个用于比较两个整数大小的函数体中,就使用了三元运算:

# 普通的比较两数大小,谁的值大返回谁的函数:
def max_min(a, b):
    if a > b:
        return a
    else:
        return b

print(max_min(290,355))

# 使用了三元运算优化代码:
def max_min(a,b):
    return a if a > b else b

print(max_min(45, 56))
retrun a if a > b else b 的意思是判断如果a > b 就返回a,否则返回b。

3、【函数的传参】

分两大方面:实参和形参。

上例中的max_min(45,56)这里的45和56就属于实际传递过去的参数,所以就是实参;

而def中定义函数时出现的max_min(a,b)中的a,b就属于形式上的参数,用于对应参考的,就是形参。

实参角度:

1、位置传参,与形参的位置与个数一一对应,按顺序,个数不能少也不能多;

2、关键字传参,同样与形参一一对应,但可以不按顺序,因为有关键字,例如上例在实参中直接填写b=56,a=45这样。

3、混合传参,就是位置参数和关键字参数混合使用,但要注意的是所有的关键字参数都要放在最后面,也就是位置参数要在关键字参数之前。

形参角度:

1、位置传参,按顺序和个数与实参形成一一对应关系;

2、默认参数,重要!设置好默认参数后,如果实参中有传递参数过来,就按照实参的参数,如果没有,就直接按照默认的预设的值。省事又灵活。默认参数永远要在位置参数的后面。

3、动态参数,今天暂时不去了解。

end

2018-3-28

原文地址:https://www.cnblogs.com/tielemao/p/8665714.html

时间: 2024-07-30 17:34:45

铁乐学Python_day09_函数的相关文章

铁乐学python_day09_作业

练习题 1.整理函数相关知识点,写博客 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素, 并将其作为新列表返回给调用者. def odd_index(l): lis = [] for i in range(len(l)): # 通过range设定索引范围比通过元素找索引要好,因为相同元素返回的索引值会有误 if i % 2 != 0: lis.append(l[i]) return lis # 验证odd_index函数的使用正常不: li = [ i for i in ran

铁乐学Python_Day34_Socket模块2和黏包现象

铁乐学Python_Day34_Socket模块2和黏包现象 套接字 套接字是计算机网络数据结构,它体现了C/S结构中"通信端点"的概念. 在任何类型的通信开始之前,网络应用程序必須创建套接字. 可以将它们比作成电话插孔,没有它将无法进行通信. 套接字最初是为同一主机上的应用程序所创建,使得主机上运行的一个程序(又名一个进程)与另一个运行的程序进行通信. 这就是所谓的进程间通信(Inter Process Communication, IPC). 有两种类型的套接字:基于文件的和面向网

铁乐学python_day25_序列化模块

部份内容摘自博客http://www.cnblogs.com/Eva-J/ 回顾内置方法: __len__ len(obj)的结果依赖于obj.__len__()的结果,计算对象的长度 __hash__ hash(obj)的结果依赖于obj.__hash__()的结果,计算对象的hash值 __eq__ obj1 == obj2 的结果依赖于obj.__eq__()的结果,用来判断值相等 __str__ str(obj) print(obj) '%s'%obj 的结果依赖于__str__,用来做

铁乐学python_Day39_多进程和multiprocess模块2

锁 -- multiprocess.Lock (进程同步) 之前我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理, 但是它们之间的运行没有顺序,一旦开启也不受我们控制. 尽管并发编程能让我们更加充分的利用IO资源,但是也会带来新的问题. 当多个进程使用同一份数据资源的时候,就会引发数据安全或顺序混乱问题. 遇到数据.安全比速度重要的场景,我们就需要将进程变回受同步控制. 例: #!/usr/bin/env python # _*_ coding: utf-8 _*_ impo

铁乐学Python_day12_作业

1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组 例如:[('红心',2),('草花',2), -('黑桃','A')] def poker(): suit = ['红心', '梅花', '黑桃', '方片'] count = [i for i in range(2, 11)] king = ['J', 'Q', 'K', 'A'] poker_list = count + king li = [] for key in suit: for value in poker_list:

铁乐学Python_day12_装饰器

[函数的有用信息] 例: def login(user, pwd): ''' 功能:登录调用 参数:分别有user和pwd,作用分别是用户和密码: return: 返回值是登录成功与否(True,False) ''' print(user, pwd, "欢迎登录") print(login.__name__) #查看函数名字 print(login.__doc__) #查看函数注释 login 功能:登录调用 参数:分别有user和pwd,作用分别是用户和密码: return: 返回值

铁乐学python_day24_面向对象进阶1_内置方法

题外话1: 学习方法[wwwh] what where why how 是什么,用在哪里,为什么,怎么用 学习到一个新知识点的时候,多问问上面的四个问题,并了解和实践透彻. 什么是反射? 先不说枯燥的概念,你可以自己总结出来,对于python中的反射,什么时候会用到? 需要使用字符串数据类型的变量名来使用变量的时候用到反射. (通过字符串的形式操作对象相关的属性和方法.) 关键词:字符串 使用到字符串的场景多在: 1)文件中存储的是字符串, 2)网络上能传递的也最接近字符串, 3)用户输入的(用

铁乐学python26_hashlib+configparser+logging模块

大部份内容摘自博客http://www.cnblogs.com/Eva-J/ hashlib模块算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢? 摘要算法又称哈希算法.散列算法. 它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). 摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest, 目的是为了发现原始数据是否被人篡改过. 摘要算法之所以能指出数据是否被篡改过,就是

铁乐学python_md5校验两个文件的一致性

# 写一个函数,参数是两个文件的路径 # 返回的结果是T/F # 判断两个文件的md5值是否相同 import hashlib def diff_md5(file1,file2): def chick_md5(file): md5 = hashlib.md5() with open(file, 'rb') as f: while True: content = f.read(8192) if content: md5.update(content) else: break return md5.