Python基础学习1---函数

Python函数篇

函数是重用的程序选, 他们允许给一块语句一个名称,然后可以在你的程序的任何地方是使用这个名称任意多次地运行这个语句块。这个就被称为 调用  函数。比如内建了很多高效的函数 如len 和range

函数通过def关键字来定义 def后面跟一个函数的标识符 名称 然后再跟一个括号,括号之中可以包括一些变量名,该行以冒号结尾:接下来就是一块语句 也就是所谓的函数体

def sayHello():
    print "hello world!"

sayHello()

函数形参

函数形参取得的值就是你提供给函数的值,这样可以利用这些值做一些事情,这些参数像变量一样只不过他们的值是在我们调用函数的时候定义而非函数本身内赋值

参数是在函数定义的圆括号内指定, 用逗号分隔 当我们调用函数的时候,需要以同样的方式提供值

注意:函数中的参数名称为形参, 而你提供的函数调用的值成为实参

def printMax(a,b):  #a b 就是形参
    if a>b:
        print a,"is maximum"
    else:
        print b,"is maximum"

printMax(3,4) #23 4 就是实参

x=5
y=7

printMax(x,y)  #x y 就是实参

局部变量

局部变量就是在函数定义内声明变量的时候 他们与函数外具有同样的其他变量没有任何关系,即变量名称对函数来说是局部的 这成为变量的作用域 所有变量的作用域是他们被定义的快, 从他们的名称被定义的那点开始

def func(x):
    print "x is ",x
    x=2
    print "change local x to",x   # 这个x的值为2 就是局部变量 只能在函数里面进行使用

x=50
func(x)
print "x is still",x  #而这个X定义的值为50 是在函数外部的 所以被称为全局变量

使用global语句

如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局
的。我们使用 global 语句完成这一功能。没有 global 语句,是不可能为定义在函数外的变量赋值的。

def func():
    global x
    print "x is ", x
    x=2
    print "change the locak to ",x

x=50
func()
print"value of x is ",x

定义变量的时候需要使用关键字global进行定义 上述代码中使用global定义的X 为2(尽管是在函数体内定义但是依旧是全局变量可以在函数体外继续使用)所以最后打印出来的数值为2

Python中有一个比较方便的参数方法就是默认参数值, 有的时候我们在申明函数的时候 在传入实参的时候不想每个参数都赋值 所以这个时候就可以使用默认参数值。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值

def say(message, times = 1):
    print message * times

say("hello")
say("world",5)

通过say函数(定义了两个形参,定义了一个默认参数值) 

在调用的时候之提供hello实参给message 而没有传入time的形参 所以调用的时候默认使用1 所一直打印hello

而下一行则提供了两个形参 得到了5次world的输出

注意: 理论来讲默认参数值应该是一个参数 更加准确的来将该值应该不能够变动即不可变

关键参数

如果你的函数有许多参数 而你只想指定其中某一个或者某几个参数, 那么你可以通过命名来为这些参数赋值, 这杯称为关键参数

这有两个优势: 由于我们不必担心参数的顺序 使用函数变得更加简单 ; 另外假设其他参数都有默认值 我们可以只给我们需要的那些参数赋值

def func(a, b=5,c=10):  # b c 就是定义了默认值参数
    print " a is ",a,"and b is ",b,"and c is ",c

func(3,7)
func(25,c=24)
func(c=50,a=100)

输出结果:

======================== RESTART: C:/Python27/func.py ========================
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50
>>>

我们可以看到如果我们不指定具体的参数的时候 系统默认是跟形参所匹配的, 即a=3 b=7 c 使用默认值为10

func(25,c=24)  把25传给了形参a b使用默认的参数5 c使用实参值

func(c=50,a=100) 注意这个顺序 我们可以自由定义这个顺序的,这个跟其他的语言有很大的区别的,这也是改语言的方便之处。

Return语句

return 语句是从一个函数返回 及跳出函数,我们也可选从函数返回一个值

def maximum(x,y):
    if x>y:
         return x
    else:
        return y
print maximum(2,3) 运行结果后出现的值为3 , 传入2 和3给 x 和y 然后运行if else 语句return Y值为3

这里需要提醒一点的是python中的return, 没有返回值的return语句等价于return none。 none在python中表示没有任何东西的特殊类型 例如 如果一个变量的值为None 可以表示他没有值

除非你提供你自己的return语句 每个函数的结尾都暗含return none, 通过下面一个函数我们就可以明白一点。

def maximum(x,y):
    if x>y:
         return x
    elif x == y:
        return x+y
    else:
        return y

print maximum(3,10)

======================== RESTART: C:/Python27/func.py ========================
10
>>>

程序返回值为 10  

如果我们把最后一个else的执行语句改成print y 结果会如下:

======================== RESTART: C:/Python27/func.py ========================
10
None
>>>

默认会在没有使用return的时候 执行了隐藏的return none 语句

DocString

Python有一个很奇妙的特性,称为 文档字符串 ,它通常被简称为 docstrings 。DocStrings是一个重要
的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行的时候,从
函数恢复文档字符串!

 1 def printMax(x,y):
 2     """ Prints the maximum of two numbers.
 3
 4     The two values must be intergers."""
 5     x= int(x)
 6     y=int(y)
 7
 8     if x>y:
 9         print x, "is maximum"
10     else:
11         print y,"is maximum"
12
13
14 printMax(3,5)
15 print printMax.__doc__
16
17 help(printMax)

在函数的第一个逻辑行的字符串是这个函数的 文档字符串 。注意,DocStrings也适用于模块和类。

文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开
始是详细的描述。 强烈建议 你在你的函数中使用文档字符串时遵循这个惯例。
你可以使用 __doc__ (注意双下划线)调用 printMax 函数的文档字符串属性(属于函数的名称)。请
记住Python把 每一样东西 都作为对象,包括这个函数。我们会在后面的类一章学习更多关于对象的知
识。
如果你已经在Python中使用过 help() ,那么你已经看到过DocStings的使用了!它所做的只是抓取函数
的 __doc__ 属性,然后整洁地展示给你。你可以对上面这个函数尝试一下——只是在你的程序中包
括 help(printMax) 。记住按q退出 help 。
自动化工具也可以以同样的方式从你的程序中提取文档。因此,我 强烈建议 你对你所写的任何正式函数编
写文档字符串。随你的Python发行版附带的pydoc命令,与 help() 类似地使用DocStrings。

===================== RESTART: C:\Python27\DocString.py =====================
5 is maximum
Prints the maximum of two numbers.

The two values must be intergers.
Help on function printMax in module __main__:

printMax(x, y)
Prints the maximum of two numbers.

The two values must be intergers.

>>>

  

时间: 2024-08-25 05:45:53

Python基础学习1---函数的相关文章

Python基础学习之函数

1.函数的定义: def 函数名(参数): 函数体 返回值 举例:def fuction1(name): if name ='Alex': print('Success') else: print('Failure') 2.返回值:告诉函数执行的结果,成功与否:def f1(age): if age >18: return("成年人") else: return("飞成年人")3.参数3.1:无参函数: def 告警(): 登录邮箱: 发送告警信息:3.2有参

python基础学习05(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #dict{键:值} #哈希 #注:字典是无顺序的,所以你懂的 #创建与赋值 dict1={} dict2={'name':'apply','avg':24,'sex':'man'} print dict1,dict2

Python基础学习(九)

Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 程序的运行速度可能加快 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. 线程在执行过程中与进程还是有区别的.每个独立的线程有一个程序运行的入口.顺序执行序列和程序的出口.

python基础学习07(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #file与input output #文件对象 #简单说来,就是写入和读取的方式 #file(),open()2个操作都是一样的,一般推荐open() #语法 # open(name[, mode[, bufferin

python基础学习08(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #异常 """ NameError: 尝试访问一个未申明的变量 ZeroDivisionError:  除数为零 SyntaxError: 解释器语法错误 IndexError: 请求的索引超出序列范

Python基础学习(十)

Python I/O模型 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件

python基础学习12(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #python class #面向对象编程oop思想,3个特性:封装.继承.多态,在其他方面的功能,比如重载,模拟等,也可以自定义自己需要的类 #在python中,面向对象主要2个:类和类实例 #类与实例 #类与实例有关

python基础学习09(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #什么是函数 #就是引用,创建,使用 #例子 def foo(): print '233' foo() #返回与函数类型 def foo1():#是一个过程 print 'hello world!' foo1() foo

python基础学习11(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #执行环境 #可调用对象 """ 许多的python 对象都是我们所说的可调用的,即是任何能通过函数操作符“()”来调用的对象.要调用可调用对象, 函数操作符得紧跟在可调用对象之后.Python 有4

Python基础学习 总结篇

Python基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结构(概要) Python学习(四)数据结构 —— int float Python学习(四)数据结构 —— str Python学习(四)数据结构 —— bool Python学习(四)数据结构 —— list tuple range Python学习(四)数据结构 —— set frozenset