[快学Python3]函数
时间:2022-05-07
本文章向大家介绍[快学Python3]函数,主要内容包括一、一个基本的函数、概述、函数定义、乘法表示例、小结、二、参数传递、概述、元组传递、字符串传递、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
一、一个基本的函数
概述
简单的说,函数就是一种代码组织方式,让你可以实现单一、或关联功能的封装,以便高复用。
函数定义
下面我们看一看在Python中函数定义的基本形式:
def 函数名(参数列表):
# 代码块
return 返回值
下面我们看一个简单的实例,计算两个数的和:
# -*- coding:utf-8 -*-
__author__ = u'苦叶子'
def sum(a, b):
c = a + b
return c
if __name__ == "__main__":
print(u"函数定义,计算和")
# 调用函数
c = sum(1 ,2)
print(c)
在调用时,参数会根据顺序与函数定义时的参数顺序匹配起来,在本例中a=1, b=2
乘法表示例
下面我们用函数封装实现九九乘法表,请看代码实例:
# -*- coding:utf-8 -*-
__author__ = u'苦叶子'
# 九九乘法表
def multi():
data = []
for i in range(1, 10):
line = []
for j in range(i, 10):
line.append(u"%d * %d = %2d " % (i, j, i*j))
data.append(line)
return data
if __name__ == "__main__":
print(u"九九乘法表实例:")
data = multi() for d in data:
print(d)
执行的结果如下:
小结
大家可以根据实例进行各种改造尝试,以便进一步深入了解函数的特性。
二、参数传递
概述
在Python中参数的传递要注意传入的是可更改的还是不可更改的对象。
在python中对象从修改来讲可以分为:
- 可更改对象 在python中,可更改的对象有list(列表)、dict(字典)、set(集合)等等
- 不可更改对象 不可更改的对象有strings、tuples、numbers等等。
在Python函数参数的传递,可以传入不可变或可变类的参数。
不可变类型:类似C/C++中的传值参数。
可变类型:类似C/C++的引用参数(即传地址方式)
因为在Python中一切皆为对象,所以在Python中严格来讲我们不能跟在C/C++中一样说是值传递或引用传递,应该讲传不可变对象或可变对象。
元组传递
下面我们讲解下如何将元组作为参数传递。例如有一个元组,我们将其传递给一个函数进行和计算:
# -*- coding:utf-8 -*-
__author__ = u'苦叶子'
# 求和
def sum_tuple(seq):
sum = 0
for s in seq:
sum = sum + s
return sum
if __name__ == "__main__":
print(u"元组传参,求和实例:")
tuple_1 = (1, 9, 10, 2, 2, 39, 0, 11, 20)
print(tuple_1)
sum = sum_tuple(tuple_1)
print(u"和为: %d" % sum)
运行结果如下:
元组传参,求和实例:
(1, 9, 10, 2, 2, 39, 0, 11, 20)
和为: 94
字符串传递
下面我们将多个字符串传递给函数进行字符串连接操作:
# -*- coding:utf-8 -*-
__author__ = u'苦叶子'
# 字符串连接函数
def str_join(str1, str2, str3):
return str1 + str2 + str3
if __name__ == "__main__":
print(u"字符串连接实例: ")
str1 = u"大家好,"
str2 = u"我的公众号是:"
str3 = u"开源优测"
str_j = str_join(str1, str2, str3)
print(str_j)
运行结果如下:
字符串连接实例:
大家好,我的公众号是:开源优测
- JavaWeb12-JSP, EL表达式,JSTL标签
- JavaWeb11-jsp.cookie.session(1)
- 交互式使用 R题(shell)
- union(并),setdiff(差),intersect(交)R语言含义
- JavaWeb11-jsp.cookie.session(2)
- 一个慢查询报警的简单处理 (r8笔记第12天)
- 厚土Go学习笔记 | 38. goroutine轻量级线程
- 厚土Go学习笔记 | 36. web服务指定路径下的get参数接收与处理
- Java开发Spring笔记第二天
- PHP调用Go服务的正确方式 - Unix Domain Sockets
- 一条看似平常的报警邮件所做的分析(r8笔记第9天)
- 55. 上传文件(Web版) | 厚土Go学习笔记
- R语言与机器学习学习笔记(分类算法
- 54. 心跳的实现 | 厚土Go学习笔记
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SQL 获取最长的日期序列
- Lucene基本知识入门
- LeetCode 35. 搜索插入位置
- 【面试系列】反射+动态代理,你为何老是搞不懂?
- 我不知道还可以用 JS 做的 6 件事
- 【服务网格架构】Envoy架构概览(7):断路,全局限速和TLS
- 你的消息队列如何保证消息不丢失,且只被消费一次,这篇就教会你
- 【服务网格架构】Envoy架构概览(9):访问日志,MongoDB,DynamoDB,Redis
- Redis Cluster 原理分析
- Ceph介绍及原理架构分享
- 分布式存储Ceph之PG状态详解
- JS中的事件循环机制与宏队列、微队列笔记
- Redis 哨兵机制以及底层原理深入解析,这次终于搞清楚了
- SQL 找出分组中具有极值的行
- 接入层Nginx架构及模块介绍分享