python学习之函数基础
第一个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学习之函数基础的更多相关文章
- Python学习笔记-函数基础
函数基础 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 为什么使用函数:减少重复代码.使程序变的可扩展使程序变得易维护 1.定义一个函数 #定 ...
- python学习总结 --函数基础
函数基础 ### 函数简介 - 定义:具有特定功能的一段代码 - 优点: - 可以减少代码的重复书写 - 可以将功能的实现着和使用者分开,可以提高开发效率 - 分类: - 库函数:print.inpu ...
- Python学习day9 函数Ⅰ(基础)
函数Ⅰ(基础) 三目运算 基本结构 v = 前面 if 条件 else 后面 #条件为真v=前面,条件为假v=后面.#等同于if 条件: v = '前面'else: v = '后面' ...
- python学习日记(函数基础)
修改文件(原理)--回顾 #修改文件(原理) with open('name','r',encoding='utf-8') as f,\ open('password','w+',encoding=' ...
- Python学习day16-模块基础
<!doctype html>day16 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...
- Python学习day12-函数基础(2)
<!doctype html>day12博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { pos ...
- Python学习day11-函数基础(1)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习课程零基础学Python
python学习课程,零基础Python初学者应该怎么去学习Python语言编程?python学习路线这里了解一下吧.想python学习课程?学习路线网免费下载海量python教程,上班族也能在家自学 ...
- Python学习笔记之基础篇(-)python介绍与安装
Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...
随机推荐
- MFC 鼠标事件
1. 新建项目 项目名称:MFCBaseMessage 2. 选择基本对话框模式,如图 ,点击完成3. 最终如图 4.右键添加类向导 5.添加鼠标事件 6.在ON_LButtonDown添加如下代 ...
- Pandas使用详细教程(个人自我总结版)
Pandas 是我最喜爱的库之一.通过带有标签的列和索引,Pandas 使我们可以以一种所有人都能理解的方式来处理数据.它可以让我们毫不费力地从诸如 csv 类型的文件中导入数据.我们可以用它快速地对 ...
- lua 语句学习
就如同C里的if else,while,do,repeat.就看lua里怎么用: 1.首先看if else t = {1,2,3} local i = 1 if t[i] and t[i] % 2 = ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ's Salesman 【离散化+树状数组维护区间最大值】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/O ...
- 过拟合是什么?如何解决过拟合?l1、l2怎么解决过拟合
1. 过拟合是什么? https://www.zhihu.com/question/264909622 那个英文回答就是说h1.h2属于同一个集合,实际情况是h2比h1错误率低,你用h1来训练, ...
- Android学习笔记_50_(转 四种加载方式详解(standard singleTop singleTask singleInstance)
Android之四种加载方式 (http://marshal.easymorse.com/archives/2950 图片) 在多Activity开发中,有可能是自己应用之间的Activity跳转,或 ...
- POJ 2533 Longest Ordered Subsequence(裸LIS)
传送门: http://poj.org/problem?id=2533 Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 6 ...
- Spring MVC之@RequestBody, @ResponseBody 详解(转)
简介: @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对 ...
- 【办公-Word-VB】人民币大写转换-带完整注释
完整代码见:我的CSDN博客 -------------------- 应公司财务人员的请求,需在Word中做个:输入阿拉伯数字,自动转换成大写,并填充到Word控件中对应的亿.万.千控件格子的功能, ...
- C语言输出格式
1 一般格式 printf(格式控制,输出表列) 例如:printf("i=%d,ch=%c\n",i,ch); 说明: (1)“格式控制”是用双撇号括起来 ...