第一个python函数:

>>> def func_1():
... print 'hello python'
...
>>> func_1()
hello python

变量:根据作用域不同,分为局部变量和全局变量

局部变量:在函数内定义的变量,局部变量作用域在函数之内

全局变量:定义在函数之外,在函数内使用global关键字标记,全局变量作用域为整个模块;全局变量尽量少用

示例:局部变量:

#!/usr/bin/env python
# coding=utf-8 申明中文字符集时'='两边不能留空格
arg = 10 #全局变量
def func():
arg = 2 #局部变量,与外边的arg为不同的两个变量
print arg
func()
print arg

执行结果:

[root@server24 python]# chmod +x func_1.py
[root@server24 python]# ./func_1.py
2
10

示例:全局变量:

#!/usr/bin/python
#coding=utf-8
arg = 10
def func():
global arg #global定义arg为全局变量,下面的赋值会覆盖函数体>外的操作
arg = 2
print arg
func()
print arg

执行结果:

[root@server24 python]# chmod +x func_2.py
[root@server24 python]# ./func_2.py
2
2

带参数的函数

位置参数:按顺序依次给变量赋值

关键字参数:顺序不再重要,可按关键字给变值

示例:位置参数:

#!/usr/bin/env python
#coding=utf-8
def func(arg1,arg2,arg3):
print arg1,arg2,arg3 func(1,2,3) #局部变量

执行结果:

[root@server24 python]# chmod +x func_3.py
[root@server24 python]# ./func_3.py
1 2 3

示例:关键字参数:

#!/usr/bin/env python
#coding=utf-8
def func(arg1,arg2,arg3):
print arg1,arg2,arg3 func(arg1=1,arg3=2,arg2=3) #局部变量

执行结果:

[root@server24 python]# ./func_3.py
1 3 2

位置参数和关键字参数可以混合使用,但是需要注意的是位置参数须在关键字参数之前

示例:位置、关键字参数混合使用

#!/usr/bin/env python
#coding=utf-8
def func(arg1,arg2,arg3):
print arg1,arg2,arg3 func(1,arg3=2,arg2=3) #局部变量

执行结果:

[root@server24 python]# ./func_3.py
1 3 2

默认参数:对一个或多个指定默认值:

示例:默认值参数:

#!/usr/bin/env python
#coding=utf-8
def func(arg1,arg2=10): #有默认值参数须在非默认值参数后面
print arg1,arg2
func(100) #非默认值参数须赋值,默认值参数可赋可不赋值

执行结果:

[root@server24 python]# ./func_4.py
100 10

可变参数

python支持可变参数。参数分为两种,一种是位置参数,一种是关键字参数。

示例:可变位置参数:

#!/usr/bin/env python
#coding=utf-8
def func(*args): #args在函数体内被打包成一个元组
print type(args)
print args
func(1,2,3,4,56,7)

执行结果:

[root@server24 python]# ./func_5.py
<type 'tuple'>
(1, 2, 3, 4, 56, 7)

示例:可变关键字参数:

#!/usr/bin/env python
#coding=utf-8
def func(**args): #args在函数体内被打包成一个字典
print type(args)
print args
func(name='tom',age='30',qq='33804139')

执行结果:

<span style="font-size:14px;">[root@server24 python]# vim func_5.py
[root@server24 python]# ./func_5.py
<type 'dict'>
{'qq': '33804139', 'age': '30', 'name': 'tom'}

混合使用:

示例:

#!/usr/bin/env python
#coding=utf-8
def func(name,age,*args,**args1): #非可变参数必须在可变参数之前;可变位置参数须在可变关键字参数之前
print name,age
for i in args:
print i
for x,y in args1.items():
print "%s ==> %s" % (x,y) func('tom',30,33804129,8888888,hello='python')

执行结果:

[root@server24 python]# ./func_6.py
tom 30
33804129
8888888
hello ==> python

参数解包

参数解包发生在函数调用时。

* 用于序列为位置参数。

** 用于解包字典为关键字参数

示例:

#!/usr/bin/env python
#coding=utf-8
def func(*args,**args1): #args打包成一个元组,args1打包成一个字典
for i in args:
print i,
for x,y in args1.items():
print "%s ==> %s" % (x,y) li = [2,3,4,5,6,7]
dic = {'name':'tom','age':30}
#func(li[0],li[1],li[2]) #传统的调用方法
func(*li,**dic) #将列表li解包成位置参数并传递进去;将字典dic解包成>关键字参数并传递进去

执行结果:

[root@server24 python]# ./func_7.py
2 3 4 5 6 7 age ==> 30
name ==> tom

函数返回值

在函数体内输出print,会产生一定的副作用,一般在函数体内将结果return出来。

return关键字:

可以返回任何对象

可以变相返回多值:默认返回的是一个元组

示例:

#!/usr/bin/env python
#coding=utf-8
def func(i):
j = i * 2
k = i * 5
return j,k #返回两个值,调用时需要用两个变量接收
x,y = func(2)
print x,y

执行结果:

[root@server24 python]# ./func_8.py
4 10

当函数中没有return关键字时,函数会默认返回None

python学习之函数基础的更多相关文章

  1. Python学习笔记-函数基础

    函数基础 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 为什么使用函数:减少重复代码.使程序变的可扩展使程序变得易维护 1.定义一个函数 #定 ...

  2. python学习总结 --函数基础

    函数基础 ### 函数简介 - 定义:具有特定功能的一段代码 - 优点: - 可以减少代码的重复书写 - 可以将功能的实现着和使用者分开,可以提高开发效率 - 分类: - 库函数:print.inpu ...

  3. Python学习day9 函数Ⅰ(基础)

    函数Ⅰ(基础) 三目运算 基本结构 v =  前面  if 条件 else 后面    #条件为真v=前面,条件为假v=后面.​#等同于if 条件: v = '前面'else:    v = '后面' ...

  4. python学习日记(函数基础)

    修改文件(原理)--回顾 #修改文件(原理) with open('name','r',encoding='utf-8') as f,\ open('password','w+',encoding=' ...

  5. Python学习day16-模块基础

    <!doctype html>day16 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...

  6. Python学习day12-函数基础(2)

    <!doctype html>day12博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { pos ...

  7. Python学习day11-函数基础(1)

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  8. Python学习课程零基础学Python

    python学习课程,零基础Python初学者应该怎么去学习Python语言编程?python学习路线这里了解一下吧.想python学习课程?学习路线网免费下载海量python教程,上班族也能在家自学 ...

  9. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

随机推荐

  1. IEEP-网络规划

    HCNP-R&S证书是公认人具备中小型企业网络构建和管理能力的专业人士   IEEP包含五个方面内容 1.网络规划与设计 2.网络实施与维护 3.网络排障 4.网络优化 5.网络割接     ...

  2. javascript 面向对象(实现继承的几种方式)

     1.原型链继承 核心: 将父类的实例作为子类的原型 缺点:  父类新增原型方法/原型属性,子类都能访问到,父类一变其它的都变了 function Person (name) { this.name ...

  3. 一个简单的例子理解Kubernetes的三种IP地址类型

    很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚. 本文我们通过一个最简单的例子来学习. 用如下命令行创建一个基于nginx的deployment ...

  4. Android(java)学习笔记13:线程组的概述和使用

    1. Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制. (1)默认情况下,所有的线程都属于主线程组. public final T ...

  5. HDU 5723 最小生成树上的期望

    题意:求最小生成树,和任意两个点之间距离的期望 官方题解: 最后求两遍点的积的时候,还是要判断父子关系. 注意 long long #include <bits/stdc++.h> usi ...

  6. TDD:代码可测试设计

    1  方法内部代码命令,查询分离. a . 命令方法:执行一系列动作. b.  查询方法: 执行查询动作,并返回值. 2  一个类中有好几个地方都用到了一个或多个全局变量,可以考虑把全局变量封装到另外 ...

  7. iOS 获取APP的CPU、内存等信息

    目标是开发一个SDK,嵌入到APP里面,用来统计当前APP的实时CPU.内存等信息 2015.11.17 http://stackoverflow.com/questions/12889422/ios ...

  8. udt通信java再次升级1.1版

    以前完成了udt的java代码测试,功能基本完成,近几天有时间重新梳理了下源码: 对原通信的关闭统一了方法,close定位过时,由shutdown与shutdownNow代替. 将一些主要方法添加了注 ...

  9. django-模板层基础2

    1.模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头 部不需要改变),那么这样我们可以把那个头部重新写在一 ...

  10. Vue组件通讯黑科技

    Vue组件通讯 组件可谓是 Vue框架的最有特色之一, 可以将一大块拆分为小零件最后组装起来.这样的好处易于维护.扩展和复用等. 提到 Vue的组件, 相必大家对Vue组件之间的数据流并不陌生.最常规 ...