Python函数(1)
一.Python函数介绍
函数时组织好的,可重复的,用来实现单一,或相关联功能的代码段。
函数的使用原则时先定义,后调用:事先准备工具的过程即函数的定义,遇到应用场景拿来当工具用即函数的调用。
函数的使用时为了解决程序的组织结构不清晰,可读性差,可扩展性差以及代码冗余等问题。
二.Python函数定义与调用
定义一个函数:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
定义函数的三种形式:
1.无参函数
def foo():
print('')
2.有参函数
def foo(x,y):
print(x,y)
3.空函数
def foo():
pass
调用函数的三种形式:
1.语句形式
def foo():
print('')
foo()
2.表达式形式
def foo(x,y):
return x+y
res = foo(1,6)
3.可以当作参数传递给另一个函数
def max(x,y):
if x>y:
return x
else:
return y
print(max(max(1 , 2) , 3))
三.函数的返回值
return语句用于退出函数,选择性地向调用方返回一个值,不带参数值的return语句返回None。
return是函数结束的标志,函数内可以拥有多个return,但只要执行一次,整个函数就结束
函数的返回值需要注意:
1 返回值没有类型限制
2 返回值没有个数限制:
返回一个值,调用函数拿到的结果就是一个值
返回多个值,调用函数拿到的结果是一个元组
返回0个值,或者不写return,调用函数拿到的结果None
四.函数参数的使用
函数的参数分为两大类:
1 形参:在定义函数阶段括号内指定变量名,形参本质就是变量名
2 实参:在调用函数阶段括号内传入的值,实参本质就是值
形参与实参的关系:在调用函数时,会将实参赋值给形参,这种关系在函数调用时临时生效,在调用结束后失效
形参与实参的具体分类:
1.位置参数
位置形参:在定义函数阶段按照从左到右的顺序依次定义的形参
注意:但凡按照位置定义的形参,必须被传值,多一个少一个都不行
位置实参:在调用函数阶段按照从左到右的顺序依次定义值
注意:但凡按照位置定义的实参,会与形参一一对应
2.关键字参数
关键字参数:在调用函数阶段,按照key=value的形式传递参数
注意:
1.可以完全打乱顺序
2.可以混合使用位置实参和关键字实参,但是位置实参必须放在关键字实参前面,而且不能对同一个形参重复赋值
3.默认参数
在定义函数阶段,就以及为某个形参赋值,改形参为有默认值的形参
注意:
1.在定义阶段就已经被赋值,意味着在调用阶段可以不用为其赋值
2.位置形参应该放到默认形参前面
3.默认参数的值在函数定义阶段就已经固定死了
4.默认参数的值通常应该时不可变类型
4.可变长度的参数
站在实参的角度,参数长度可变指的是在调用函数时,传入的实参值的个数不固定
而实参的定义方式无非两种:位置实参,关键字实参.对应着形参也必须有两种解决方案*与**,来分别应对移除的位置实参与关键字实参
1.在形参中带*:会将调用函数时溢出的位置实参保存成元组的形式,然后赋值*后的变量名
def foo(x,y,*z):#z=(3,4,5)
print(x,y,z)
foo(1,2,3,4,5)
在实参中带*:但凡在实参中带*,在传值前都先将其打散成位置实参,再进行赋值操作
def foo(x,y,*z):
print(x,y,z)
foo(1,*[2,3,4,5])#foo(1,2,3,4,5)
2.在形参中带**:会将调用函数时溢出的关键字实参保存成字典的形式,然后赋值**后的变量名
def foo(x,y,**z):#z={'b':3,'c': 4, 'w': 5}
print(x,y,z)
foo(1,y=2,b=3,c=4,w=5)
在实参中带**:但凡在实参中带**,在传值前都先将其打散成关键字实参,再进行赋值操作
def foo(x,y,z):
print(x,y,z)
foo(1,**{'z':1,'y':2})#foo(1,z=1,y=2)
当我们想要将传给一个函数的参数格式原封不动地转给其内部的一个函数,应该使用下面这种形式
def bar(x,y,z,w,s,a,b):
print(x,y,z,w,s,a,b)
def foo(*args,**kwargs) :#args=(1,2,3,4,5) kwargs={'a':1,'b':2}
bar(*args,**kwargs)#bar(*(1,2,3,4,5),**{'a':1,'b':2}) bar(1,2,3,4,5,a=1,b=2)
foo(1,2,3,4,5,a=1,b=2)#虽然调用的时foo,但是要遵循的是却是bar的参数标准
5.命名关键字参数
只要放到*与**之间的参数,称为命名关键字参数
注意:命名关键字参数必须按照key=value的形式传值
Python函数(1)的更多相关文章
- python 函数之day3
一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...
- Python函数作用域的查找顺序
函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...
- Python函数讲解
Python函数
- Python函数信息
Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...
- Python函数参数默认值的陷阱和原理深究"
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...
- Python开发【第四章】:Python函数剖析
一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...
- Python函数解析
对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...
- Python入门笔记(18):Python函数(1):基础部分
一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...
- Python函数1
Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...
- python函数传参是传值还是传引用?
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...
随机推荐
- P3321 [SDOI2015]序列统计 FFT+快速幂+原根
\(\color{#0066ff}{ 题目描述 }\) 小C有一个集合S,里面的元素都是小于M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S.小C用这 ...
- DP【洛谷P4290】 [HAOI2008]玩具取名
P4290 [HAOI2008]玩具取名 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用"WI ...
- DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)
SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存 ...
- linux 基本概念
Linux把物理内存分为了固定统一大小的块,称为page(页框),一般为4KB. Linux采用4KB页框大小作为标准的物理内存分配单元,内核用数据结构page描述一个页框的状态信息,其实页是进程的概 ...
- 【模板】文艺平衡树(Splay) 区间翻转 BZOJ 3223
您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 N,M<= ...
- C语言中变量、全局变量与变量的作用域
什么是变量: 变量常量都是表征数据的一种形式:常量用来表示数据的值: 变量不仅可以用来表示数据的值:还可以用来存放数据:因为变量对应着一定的内存单元: 变量和常量必须先定义后使用. 变量名和常量名都是 ...
- 签名:实现参数字典排序,然后拼接为url参数形式
在很多地方请求参数需要做处理例如: 步骤 1.参数字典排序. 2.拼接字符. /// <summary> /// 生成签名 /// </summary> /// <par ...
- beleline hive spark-shell帮助
-- beeline帮助 : jdbc:hive2://100.69.216.40:10001> !help !addlocaldriverjar Add driver jar file in ...
- Gone Fishing
原题网址 代码已经写出来了,自己测试的时候没有问题,提交上去之后反馈了我一个Runtime error 一口老血啊! 找了半天还是没找到可能越界啊啥的地方 import java.util.Scan ...
- jQuery中的事件和动画 以及视频展示效果实例
经过这几天学习jQuery中的事件和动画,对jQuery更深的认识,接下来先把视频展示效果的代码贴出来,最后把我在学习jQuery事件和动画之后总结的思维导图 <!doctype html> ...