函数

什么是函数函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字。

可以通过函数名在程序的不同地方多次执行(这通常叫做函数调用),却不需要再所有地方重复编写这些语句。

函数的分类-自定义函数(用户自己编写)

-预定义的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 基础 函数相关推荐

  1. python中def func是什么意思_Python的函数参数详解

    原标题:Python的函数参数详解 前言 Python中函数的参数可以分为两大类形参和实参~ def func(x, y): # x, y 就是形参 print(x, y) func(2, 3) # ...

  2. python中def fun()是什么意思_python学习函数

    函数 对象 模块 定义函数 def MyFirstFunction(): print('第一个函数') ······ 调用函数 MyFirstFunction() 加入参数 def MySecondF ...

  3. python中def _init_是什么意思_Python中self和__init__的含义与使用

    原文地址https://blog.csdn.net/love666666shen/article/details/78189984 Python中的self 在Python中的类Class的代码中,常 ...

  4. python中def _init_是什么意思_python中的__init__(self)是什么意思呢

    __init__(self)这个时类的初始化函数 classObj:def __init__(self):print 1obj= Obj() #这时候__init__这个函数会被调用,self指obj ...

  5. python中def _init_是什么意思_python中def __init__():的含义

    def __init__():的含义 关于__init__()函数,其本身是python的构造方法.如果不清楚这一点,看着ta就会一脸懵逼. 这个函数类似init()初始化方法,来初始化新创建对象的状 ...

  6. python中的打开文件的用法_python基础之文件操作

    文件操作 一 介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周 ...

  7. python中def main是什么意思_Python中’__main__’模块的作用

    Python不同于C/C++,程序执行并不需要主程序,如main(),而是文件自上而下的执行. 但很多Python程序中都有 1 if __name__ == '__main__':2 stateme ...

  8. python中str的index什么意思_python index函数是什么意思

    Python index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find() 方法一样 ...

  9. python中的while语句怎么居中_python基础之while语句操作

    # i = 0 # while (i < 9): # print("i ----> ",i) # i = i + 1 # print(i,"i即将大于或者等于 ...

最新文章

  1. RequireJS和AMD规范
  2. Ajax学习(6)---服务器端脚本和程序中用 JSON 进行响应和回复
  3. 2周年福利 | 20万字《网易智企技术合辑》重磅发布!
  4. 如何使用网上下载的arcgis工具箱,报错汇总
  5. 使用Git初始化项目时操作
  6. java图表标题_Java 创建Excel图表
  7. vue-Resource(与后端数据交互)
  8. 计算机网络知识大总结,包含各种熟悉得不能再熟悉的术语解析
  9. C/C++ —— 算符优先级的问题
  10. R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(一,基本原理)
  11. 力扣-1877 数组中最大数对和的最小值
  12. NOIp2018集训test-10-20 (bike day6)
  13. char* char [] 区别[zz]
  14. Java中系统属性Properties介绍 System.getProperty()参数大全
  15. java中model的意思_开发中model,entity和pojo的区别
  16. 程序员的寂寞,你们不懂
  17. 老男孩学python_在老男孩如何学习python?老男孩python课程好吗、
  18. 西电计算机本科毕业,不在一线城市,不是顶级大学,西电毕业生薪酬凭啥陕西第一?...
  19. button和submit的区别
  20. 差动变压器的振动测量实验 思考题

热门文章

  1. 一文搞定JS中的DOM基础与进阶
  2. 线性表应用之线性表算法设计六大经典案例
  3. python下载模块命令_python kafka模块操作命令集合
  4. python核心教程百度云_Python核心技术与实战 共44讲 中文pdf高清版
  5. 操作系统原理: 操作系统概述
  6. Oracle 原理: 公有同义词 和 私有同义词
  7. vim 环境变量 encoding、fileencoding、fileencodings 的作用
  8. NXP I.MX6ULL 交叉编译工具链下载地址?
  9. c++程序设计原理与实践_课程思政水资源系统优化原理与方法课程思政元素的探索...
  10. kafka reassign 限速_RabbitMQ 与 Kafka 的技术差异以及使用注意点