当前位置: 首页 > news >正文

Python3中函数的用法

1、定义一个函数

  • 以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

由于python程序是属于按顺序执行,必须要先定义或引入函数,在后续中使用函数,除非存在main函数

2、可变与不可变(immutable)对象

python 函数的参数传递:

  • 不可变类型:值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

  • 可变类型:引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

def test(i):i = i + 2print(i)a = 2
test(a)
print(a)

4
2

3、关键字参数

如果函数声明了参数,则调用时必须要传递。

或者再参数定义时,设置默认值

def defParams(str = 'string'):print(str)defParams()

 针对多个参数,传参时定义关键词,避免顺序传入

# 可写函数说明
def printinfo(name, age=5):print("Name: ", name)print("Age ", age)# 调用printinfo函数
printinfo(age=50, name="miki")
printinfo(name="miki")

Name:  miki
Age  50
Name:  miki
Age  5

4、不定长参数

 在函数定义的最后一个参数前添加 星号 *   标记,用于接收传入的剩余参数

# 不定长参数函数
def pt(arg1, *args):print(arg1)print(args)pt(1, 2, 3, 4, 5, 6)

1
(2, 3, 4, 5, 6)

5、匿名函数

通过使用 lambda 关键词,以简短的代码定义函数

# 匿名函数
sum = lambda arg1, arg2: arg1 + arg2
print(sum(1, 2))

 6、main 启动函数

以如下代码的第一行,固定写法

if __name__ == '__main__':     print ('now __name__ is %s' %__name__)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux-用户与权限管理-组管理
  • 防患于未然,智能监控新视角:EasyCVR视频平台在高校安全防控中的关键角色
  • 一维稳态与非稳态导热的详细分析
  • 通信工程学习:什么是IP-CAN(IP连接接入网)
  • ETL_场景练习
  • 建投数据通过ISO9001再认证
  • [Postman]接口自动化测试入门
  • 探索Promise:JavaScript异步编程的基石
  • 组件通信——provide 和 inject 实现爷孙组件通信
  • 机器学习和深度学习的区别是什么?
  • 【WPF】Border的使用
  • 【Java数据结构】泛型的进阶部分(泛型通配符)
  • 数据挖掘顶会ICDM 2024论文分享┆MetaSTC:一种基于聚类和元学习的时空预测框架
  • JS获取页面中video标签视频的封面和时长
  • ctfshow-命令执行
  • 【Leetcode】101. 对称二叉树
  • 230. Kth Smallest Element in a BST
  • github指令
  • Just for fun——迅速写完快速排序
  • Linux gpio口使用方法
  • Netty源码解析1-Buffer
  • Spark RDD学习: aggregate函数
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vue-cli3搭建项目
  • vue的全局变量和全局拦截请求器
  • 百度地图API标注+时间轴组件
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 关于Flux,Vuex,Redux的思考
  • 和 || 运算
  • 简单易用的leetcode开发测试工具(npm)
  • 前端之React实战:创建跨平台的项目架构
  • 如何利用MongoDB打造TOP榜小程序
  • 我与Jetbrains的这些年
  • 学习JavaScript数据结构与算法 — 树
  • 在Unity中实现一个简单的消息管理器
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 说说我为什么看好Spring Cloud Alibaba
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​zookeeper集群配置与启动
  • ​水经微图Web1.5.0版即将上线
  • #android不同版本废弃api,新api。
  • #Linux(Source Insight安装及工程建立)
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (7)摄像机和云台
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (剑指Offer)面试题34:丑数
  • (新)网络工程师考点串讲与真题详解
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • *1 计算机基础和操作系统基础及几大协议
  • .net反编译的九款神器