python中def fun(a、b=200)_python 基础 函数
函数
什么是函数函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字。
可以通过函数名在程序的不同地方多次执行(这通常叫做函数调用),却不需要再所有地方重复编写这些语句。
函数的分类-自定义函数(用户自己编写)
-预定义的python函数(系统自带的一些函数,还有一些第三方编写的函数,如其它程序员编写的一些函数,对于这些现成的函数用户可以直接拿来使用)
函数的定义:
def 函数名 (函数列表)
#可以没有参数
#函数名的定义和变量的定义是相同的
注意:
函数名是两个以上单词时,第二个单词的首字母需要大写>>> a = 10
>>> b = 20
>>> def add():
... c=a+b
... print c
...
>>> add()
30
函数的调用#/usr/bin/python
def fun():
if True:
print "kong"
print "a"
if True:
fun()
if fun():
print "ok"
[root@zabbix tools]# python 8.py
a
kong
kong
函数的参数
*形式参数:
- 在定义函数时函数名后面圆括号中的变量名称叫做”形式参数“,简称:形参;#~/usr/bin/python
def fun(x): #x形参
print x
s = raw_input("please input something")
fun(s)
[root@zabbix tools]# python 8.py
please input something100 #100实参
100错误传参[root@zabbix tools]# python 8.py
please input somethingd
Traceback (most recent call last):
File "8.py", line 5, in
fun()
TypeError: fun() takes exactly 1 argument (0 given)
#类型错误,fun()函数未传参。#TypeError: fun() takes exactly 1 argument (2 given)
多个参数定义:#!/usr/bin/python
def fun(a,b):
if a == b :
print "ok"
else:
print x, '!=' ,y
x=raw_input("please number something:")
y=raw_input("please number something:")
fun(x,y)[root@zabbix tools]# python 9.py
please number something:2
please number something:2
ok
[root@zabbix tools]# python 9.py
please number something:3
please number something:5
3 != 5
*实际参数:
- 在调用函数时,函数名后面圆括号中的变量名称叫做“实际参数”,简称:实参;
小游戏:
[root@zabbix tools]# python 9.py
please something:10
please something:巧克力
正在生成一个 10 元 巧克力 口味的冰激凌!
[root@zabbix tools]# cat 9.py
#!/usr/bin/python
#!coding:utf8
def mashine(x,y):
print "正在生成一个",x,'元',y,"口味的冰激凌!"
x=raw_input("please something:")
y=raw_input("please something:")
mashine(x,y)
#在上述的小游戏中,当用户什么都不输入的时候,这时候就需要函数的缺省参数(默认参数)。
缺省参数
总结:当设置默认参数时是自右向左开始的!可以通过调换顺序调整!#!/usr/bin/python
#!coding:utf8
def mashine(x,y="奶油"):
print "正在生成一个",x,'元',y,"口味的冰激凌!"
mashine(3)
[root@zabbix tools]# python 9.py
正在生成一个 3 元 奶油 口味的冰激凌!
当然x 也可以有默认值
#!/usr/bin/python
#!coding:utf8
def mashine(x=10,y="奶油"):
print "正在生成一个",x,'元',y,"口味的冰激凌!"
mashine()
[root@zabbix tools]# python 9.py
正在生成一个 10 元 奶油 口味的冰激凌!
当传值得时候,会使用所传的参数
#!/usr/bin/python
#!coding:utf8
def mashine(x=10,y="奶油"):
print "正在生成一个",x,'元',y,"口味的冰激凌!"
mashine(3,"巧克力")
小问题:
当参数只传一个价格的时候:#!/usr/bin/python#!coding:utf8def mashine(x=10,y="奶油"): print "正在生成一个",x,'元',y,"口味的冰激凌!"mashine(3)[root@zabbix tools]# python 9.py 正在生成一个 3 元 奶油 口味的冰激凌!
当传递口味的时候:#!/usr/bin/python#!coding:utf8def mashine(x=10,y="奶油"): print "正在生成一个",x,'元',y,"口味的冰激凌!"mashine('巧克力')[root@zabbix tools]# python 9.py 正在生成一个 巧克力 元 奶油 口味的冰激凌!#!/usr/bin/python#!coding:utf8def mashine(x=10,y="奶油"): print "正在生成一个",x,'元',y,"口味的冰激凌!"mashine(y='巧克力')[root@zabbix tools]# python 9.py 正在生成一个 10 元 巧克力 口味的冰激凌!#传递形参、实参的时候都可以固定给值。
如果x值有默认参数,y没有,如下:#!/usr/bin/python
#!coding:utf8
def mashine(x=10,y):
print "正在生成一个",x,'元',y,"口味的冰激凌!"
mashine('巧克力')
[root@zabbix tools]# python 9.py
File "9.py", line 3
def mashine(x=10,y):
SyntaxError: non-default argument follows default argument
#报语法错误;
总结:当设置默认参数时是自右向左开始的!可以通过调换顺序调整!#!/usr/bin/python
#!coding:utf8
def mashine(x,y=10):
print "正在生成一个",y,'元',x,"口味的冰激凌!"
mashine('巧克力')
[root@zabbix tools]# python 9.py
正在生成一个 10 元 巧克力 口味的冰激凌!
函数中的变量
#python 中定义的变量都有其特定的作用域
*局部变量 : -在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称为局部变量;例证:#!/usr/bin/python
def fun():
a=100
print a
print a
[root@zabbix tools]# python 10.py
Traceback (most recent call last):
File "10.py", line 5, in
print a
NameError: name 'a' is not defined
调用函数:#!/usr/bin/python
def fun():
a=100
print a
fun()
print "#"*50
print a
[root@zabbix tools]# python 10.py
100
##################################################
Traceback (most recent call last):
File "10.py", line 7, in
print a
NameError: name 'a' is not defined
#表明100是由函数调用显示。
*全局变量;:--在一个文件顶部定义的变量可以供该文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量;无
全局变量和局部变量重名#!/usr/bin/python
a=10
def fun():
a=100
x=1
print x
print a
fun()
print a
[root@zabbix 123]# python c.py
1
100
10注意变量和函数的位置关系#!/usr/bin/python
a=10
def fun():
a=100
x=1
print x
print a
print a
fun()
[root@zabbix 123]# python c.py
10
1
100
global 语句
global 变量名
强制声明为全局变量范例:
#!/usr/bin/python
x="my name is HIBOY"
def fun():
x=100
global y
y = 200
print x
fun()
print y#!/usr/bin/python
a=10
def fun():
global a
a = 100
print a
print a
fun()
print a
[root@zabbix 123]# python c.py
10
100
100
总结: 在函数之前全局变量值不变,在函数之后全局变量为函数的中全局变量的值
函数的返回值
函数被调用后会返回一个指定的值
函数调用后默认返回None>>> def f(x,y):
... print x+y
...
>>> f(2,3)
5
>>> z = f(5,6)
11 #此处只是打印
>>> print z
None
return 返回值>>> def fun(x,y):
... print "hello!!!"
... return x+y
...
>>> fun(5,7)
hello!!!
12
>>> z = fun(5,7)
hello!!!
>>> print z
12
返回值可以是任意类型>>> def fun():
... return range(10)
...
>>> a = fun()
>>> print a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
return执行后,函数终止>>> def fun():
... print "hello"
... print "word"
...
>>> fun()
hello
word
>>> def fun():
... return "hello"
... return "word"
...
>>> fun()
'hello'
区分返回值和打印>>> def f(x,y):
... if x
... return -1
... print "hello word!"
...
>>> f(5,6)
-1
>>> f(7,6)
hello word!
>>> z = f(7,6)
hello word!
>>> print z
None
多类型传值和传值冗余
-向函数传元组和序列
*表示传值元组和序列
>>> t = ('name','kong')
>>> def fun(x,y):
... print "%s : %s" %(x,y)
...
>>> fun(*t)
name : kong
>>> print "%s %s" %('name','kong')
name kong>>> def fun(x,y):
... print x,y
...
>>> fun('a',1)
a 1
>>> t=('b','c')
>>> fun(t)
Traceback (most recent call last):
File "", line 1, in
TypeError: fun() takes exactly 2 arguments (1 given)
#t是一个元组类型数据的整体,传值时值只能对应到x,y无法接受任何值
>>> fun(t,10)
('b', 'c') 10
#传值要一一对应
>>> f =('kong','123','xlo')
>>> fun(*f)
Traceback (most recent call last):
File "", line 1, in
TypeError: fun() takes exactly 2 arguments (3 given)
-向函数传值字典
**表示传值字典>>> def fun(name="name",age="0"):
... print "name:%s" % name
... print "age:%s" % age
...
>>> fun("kong",30)
name:kong
age:30
>>> fun("kong")
name:kong
age:0
字典传值
>>> d = {'age':30,'name':'mail'}
>>> fun(age=30,name='mail')
name:mail
age:30
>>> fun(**d)
name:mail
age:30
>>> d['age']=31
>>> fun(**d)
name:mail
age:31
>>> c={'a':1,'b':2}
>>> fun(**c)
Traceback (most recent call last):
File "", line 1, in
TypeError: fun() got an unexpected keyword argument 'a'
多类型的传递方式
>>> fun(c['a'],c['b'])
name:1
age:2
处理多余的实参>>> def f(x,*all):
... print x
... print all
...
:
>>> f(1)
1
()
>>> f(1,2,3)
1
(2, 3)
传递默认参数
>>> f(x=4,y=10)
Traceback (most recent call last):
File "", line 1, in
TypeError: f() got an unexpected keyword argument 'y'
#10不是单纯传值
多类型传参
>>> def fun(x,*all,**arges):
... print x
... print all
... print arges
...
**变量名定义字典
>>> fun(1)
1
()
{}
>>> fun(1,2,3,4,5,6)
1
(2, 3, 4, 5, 6)
{}
#多余的没有映射关系,所以放到元组里;
>>> fun(1,2,3,4,5,6,arges=-2)
1
(2, 3, 4, 5, 6)
{'arges': -2}
(x给了过多的值)
>>> fun(1,2,3,4,5,6,x=10,y=20,arges=30)
Traceback (most recent call last):
File "", line 1, in
TypeError: fun() got multiple values for keyword argument 'x'
>>> fun(1,2,3,4,5,6,y=20,arges=30)
1
(2, 3, 4, 5, 6)
{'y': 20, 'arges': 30}
python中def fun(a、b=200)_python 基础 函数相关推荐
- python中def func是什么意思_Python的函数参数详解
原标题:Python的函数参数详解 前言 Python中函数的参数可以分为两大类形参和实参~ def func(x, y): # x, y 就是形参 print(x, y) func(2, 3) # ...
- python中def fun()是什么意思_python学习函数
函数 对象 模块 定义函数 def MyFirstFunction(): print('第一个函数') ······ 调用函数 MyFirstFunction() 加入参数 def MySecondF ...
- python中def _init_是什么意思_Python中self和__init__的含义与使用
原文地址https://blog.csdn.net/love666666shen/article/details/78189984 Python中的self 在Python中的类Class的代码中,常 ...
- python中def _init_是什么意思_python中的__init__(self)是什么意思呢
__init__(self)这个时类的初始化函数 classObj:def __init__(self):print 1obj= Obj() #这时候__init__这个函数会被调用,self指obj ...
- python中def _init_是什么意思_python中def __init__():的含义
def __init__():的含义 关于__init__()函数,其本身是python的构造方法.如果不清楚这一点,看着ta就会一脸懵逼. 这个函数类似init()初始化方法,来初始化新创建对象的状 ...
- python中的打开文件的用法_python基础之文件操作
文件操作 一 介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周 ...
- python中def main是什么意思_Python中’__main__’模块的作用
Python不同于C/C++,程序执行并不需要主程序,如main(),而是文件自上而下的执行. 但很多Python程序中都有 1 if __name__ == '__main__':2 stateme ...
- python中str的index什么意思_python index函数是什么意思
Python index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find() 方法一样 ...
- python中的while语句怎么居中_python基础之while语句操作
# i = 0 # while (i < 9): # print("i ----> ",i) # i = i + 1 # print(i,"i即将大于或者等于 ...
最新文章
- RequireJS和AMD规范
- Ajax学习(6)---服务器端脚本和程序中用 JSON 进行响应和回复
- 2周年福利 | 20万字《网易智企技术合辑》重磅发布!
- 如何使用网上下载的arcgis工具箱,报错汇总
- 使用Git初始化项目时操作
- java图表标题_Java 创建Excel图表
- vue-Resource(与后端数据交互)
- 计算机网络知识大总结,包含各种熟悉得不能再熟悉的术语解析
- C/C++ —— 算符优先级的问题
- R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(一,基本原理)
- 力扣-1877 数组中最大数对和的最小值
- NOIp2018集训test-10-20 (bike day6)
- char* char [] 区别[zz]
- Java中系统属性Properties介绍 System.getProperty()参数大全
- java中model的意思_开发中model,entity和pojo的区别
- 程序员的寂寞,你们不懂
- 老男孩学python_在老男孩如何学习python?老男孩python课程好吗、
- 西电计算机本科毕业,不在一线城市,不是顶级大学,西电毕业生薪酬凭啥陕西第一?...
- button和submit的区别
- 差动变压器的振动测量实验 思考题
热门文章
- 一文搞定JS中的DOM基础与进阶
- 线性表应用之线性表算法设计六大经典案例
- python下载模块命令_python kafka模块操作命令集合
- python核心教程百度云_Python核心技术与实战 共44讲 中文pdf高清版
- 操作系统原理: 操作系统概述
- Oracle 原理: 公有同义词 和 私有同义词
- vim 环境变量 encoding、fileencoding、fileencodings 的作用
- NXP I.MX6ULL 交叉编译工具链下载地址?
- c++程序设计原理与实践_课程思政水资源系统优化原理与方法课程思政元素的探索...
- kafka reassign 限速_RabbitMQ 与 Kafka 的技术差异以及使用注意点