Python学习笔记 — 函数
函数是对程序逻辑进行结构化或过程化的一种编程方法。函数具有两个方面的意义:1)将代码分块,易于管理和阅读;2)最大化代码复用和最小化代码冗余,节省空间,有助于保持一致性。
1. 函数定义
Python中函数的定义,主要包括三个部分:
标题行:def关键字,函数名,参数集合。注意,在函数定义的时候,不用指定函数的返回值,这与其他语言有区别。
文档字串:可选,强烈推荐
函数体:必需
def function_name(arguments):
"function_documentation_string"
function_body_suite
2. 函数调用
在程序中通过函数名后跟括号调用这个函数,可能还需要将传入的参数放在括号中。不允许在函数未声明之前,对其进行引用或者调用。
2.1 参数传递
参数是函数体操作的对象,有形参与实参之分:形参是函数定义时的参数;实参是函数调用时的参数。
Python的参数传递机制与C语言的相同,遵循以下两个原则:
1) 不可变参数通过值传递:函数操作的实际上是参数的一份拷贝,对其的修改不会体现在函数的外部。
2) 可变参数通过引用传递:函数操作的是参数的引用,对其的修改会体现在函数的外部。
2.2 参数匹配
函数调用传递参数的时候,要考虑参数的位置,数量,默认值等因素。主要有下面几种参数匹配模型:
- 位置匹配:最常用的匹配方式,按位置从左至右的顺序进行匹配
- 关键字参数:调用时通过参数变量名进行匹配,就可以不用考虑参数的顺序
- 默认参数:如果调用时传入的参数少于定义时的参数时,没有传递的参数使用预先定义的默认值,但是所有必需参数都要在默认参数之前
- 可变参数:使用以*开头的参数,收集任意数目的参数
2.3 返回值
函数会向调用者返回一个值。不过返回值不用在def的时候指定,这个与Java有些不同。
return语句是显式地返回,也可以没有return语句,函数会在执行完函数主体时结束,仍然会隐式地返回None,类似于Java中的“void”表示没有返回值。
3. 变量作用域
变量因定义的位置不同可以分为局部变量和全局变量:局部变量是在函数体内定义的变量,作用域从被定义的位置到函数体结束;全局变量是在文件开头声明的变量,或者所有import变量,作用域是整个文件。
如果在函数中要对全局变量进行赋值,必须经过global声明,否则被认为是局部变量赋值。如果仅仅只是引用全局变量,可以不经过声明。
Python学习笔记 — 函数的更多相关文章
- Python学习笔记 - 函数参数
>>> def power(x): ... return x * x ... >>> power(5) 25 >>> def power(x, n ...
- Python学习笔记—函数
函数 我们知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = 73 ...
- Python学习笔记-函数基础
函数基础 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 为什么使用函数:减少重复代码.使程序变的可扩展使程序变得易维护 1.定义一个函数 #定 ...
- 04 python学习笔记-函数、函数参数和返回值(四)
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print(),我们也可以自己创建函数,这叫做用户自定 ...
- python学习笔记-函数与可变长参数
一.函数 1. def test(x): y=x+1 return yprint(test) #这是打印函数在内存中的地址 过程:就是没有返回值的函数 在python中过程也是函数,就算没哟返回值,也 ...
- Python学习笔记——函数
1.标准类型内建函数 <1>type() —— 返回对象的类型 <2>cmp() —— 比较两个对象,返回两个对象的ASCII码的差 <3>str().repr() ...
- python学习笔记 函数
形式: def function(a,b,c=0,*args,**kw)#a,b必选参数,*args可变参数,**kw关键字参数 1.函数的返回值可以是多个参数.多个参数时,实际上返回的是一个tupl ...
- Python学习笔记(二):条件控制语句与循环语句及常用函数的用法
总结的内容: 1.条件控制语句 2.while循环语句 3.for循环语句 4.函数的用法 一.条件控制语句 1.介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决 ...
- Python学习笔记014——迭代工具函数 内置函数enumerate()
1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...
随机推荐
- C#设置窗体最大化且不遮挡任务栏的方法
C#设置窗体最大化示例: 也可将方法内的内容放到主窗体首次加载load方法中. /// <summary> /// 设置窗体最大化(不遮挡任务栏)但此方法在宽屏中不能显示全屏/// < ...
- HTTPS的学习总结
HTTPS学习总结 简述 HTTPS对比HTTP就多了一个安全层SSL/TLS,具体就是验证服务端的证书和对内容进行加密. 先来看看HTTP和HTTPS的区别 我用AFN访问http下的httpbin ...
- QT通过IP地址定位地址(用get方法取数据)
通过IP地址定位地址,是要通过查询数据库,如果自己做一个这样的数据库工作量就比较大,所以在网上找了一个查询IP地址的网址,通过调用这个网址查询来实现,但是这个有一定的弊端,如果没有网络或者这个网址不可 ...
- 爬虫框架Scrapy
前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...
- cocos2dx进阶学习之坐标转换
在cocos2dx中,有四种坐标系 GL坐标系:左下为原点,x轴向右,y轴向上 UI坐标系:左上为原点,x轴向右,y轴向下 世界坐标系:与GL坐标系相同 本地坐标系:是节点(CCNode)的坐标系,原 ...
- 简单的iOS抽屉效果
#define screenW [UIScreen mainScreen].bounds.size.width #import "ViewController.h" @interf ...
- 仿知乎安卓client滑动删除撤销ListView
标签(空格分隔): Android 新版的知乎安卓client有一个有趣的功能,就是在一个item里.向右滑动时整个item会越来越透明,滑动到一半时,整个item就不见了.放开手指就是删除.删除后还 ...
- ThinkPHP - 连贯操作 - 【实现机制】
<?php //模型类 class Model { //数据库连接 private $_conn = NULL; //where语句 private $_where = NULL; //表名称 ...
- iOS 日历控件
近期需要写一个交互有点DT的日历控件,具体交互细节这里略过不表. 不过再怎么复杂的控件,也是由基础的零配件组装起来的,这里最基本的就是日历控件. 先上图: 从图中可以看出日历控件就是由一个个小方块组成 ...
- mysql版sql助记
新建用户 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; [host 中 使用 % 为通配符, 匹配任意远程主机] 赋权 GRANT p ...