Python 函数的一般形式及参数
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2017/11/01 21:46
# @Author : lijunjiang
# @File : fanction.py
"""函数的一般形式"""
"""函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段
可以提高应用的模块性,和代码的重复利用率
分为内建函数和自定义函数
"""
"""
函数以def关键字开头,后面跟函数标识符和圆括号()
任何传入参数和自定义变量必须放在圆括号中间(定义形参)
函数内容以冒号开始,并且缩进
return[表达式]结束函数,可以选择性的返回一个值给调用方,不带表达式的return相当于返回None
"""
# 定义一个函数
# def functionname( parameters):
# 代码段
# return [expression]
# 示例:
name = raw_input('please input your name: ')
def fun1(input_name):
print(input_name)
return
fun1(name)
"""
执行结果:
C:\Python27\python.exe D:/Python/Study/fanction.py
please input your name: lijiang
lijiang
Process finished with exit code 0
"""
"""函数的调用"""
"""
如上例所示:定义完成一个函数时,需要使用 函数名([参数]) 的形式调用函数(传入参数为实际参数)
"""
"""函数的参数-形参与实参"""
"""
上例, 在函数 fun1(input_name) 中,input_name 为形参
函数调用 fun1(name) 中, name 为实参
"""
# 声明一个函数时可以不定义形参,但是声明函数时如果定义了形参,则在调用时必须传放实参或设置缺省值
def fun2():
print('hello {}'.format(name))
return
fun2()
# 输出 hello lijunjiang
# 正常情况下,在函数声明时,如果有一个或多个形参,则在调用该函数时,也需要传入一个或多个实参,
# 且一般每一个形参和实参是相互对应的 (必备参数)
def func3(x, y, z):
print('x = {0}'.format(x))
print('y = {0}'.format(y))
print('z = {0}'.format(z))
func3(10, 20, 30)
"""
执行结果:
x = 10
y = 20
z = 30
"""
# 也可以在调用时指定 (关键字参数), 使函数调用时参数的顺序和声时不一致
func3(z=30, x=10, y=20)
"""
x = 10
y = 20
z = 30
"""
# 在定函数时,也可设置形参的缺省值 (缺省参数)
def func4(x, y=100):
print('x = {0}'.format(x))
print('y = {0}'.format(y))
func4(10, 50)
func4(10)
"""
x = 10
y = 50
x = 10
y = 100
从结果可以看出.当调用时传入第二个实参时,以传入实参为准,不传入时,默认的缺省值生效
"""
# *var_args_tuple 和 **var_args_dict (不定长参数)
# 当一个函数需要处理比声明时更多的参数时,可使用*var_args_tuple 和 **var_args_dict
# *var_args_tuple 传入的是一个tuple 类型
def func5(x, y, *z):
print('x = {0}'.format(x))
print('y = {0}'.format(y))
print('z = {0}'.format(z))
print('lenth of z is: {0}'.format(len(z)))
for i in z:
print(i)
func5(10, 20, 30, 40, 50, 60)
#等价于
# tuple_test = (30, 40, 50, 60)
# func5(10, 20, tuple_test)
"""
x = 10
y = 20
z = (30, 40, 50, 60)
lenth of z is: 4
30
40
50
60
从结果可以看出,x, y,分别对应前两个实参10 20,剩余的参数30 40 50 60 做为一个元组传递给形参 z
"""
# **var_args_dict 传入的是一个dict 类型
def func6(a, b, **c):
print('a = {0}'.format(a))
print('b = {0}'.format(b))
print('c = {0}'.format(c))
print(type(c))
for key, valaue in c.iteritems():
print('key = {0}, valaue = {1}'.format(key, valaue))
func6(10, 50, x='hello', y='world')
# 等价于
# dict_test = {'x':'hello', 'y':'world'}
# func6(10, 50, **dict_test)
"""
a = 10
b = 50
c = {'y': 'world', 'x': 'hello'}
<type 'dict'>
key = y, valaue = world
key = x, valaue = hello
从结果可以看出,10 传给了形参a ,50 传给了形参 b , x='hello', y='world' 作为一个字典传给了 形参 c
"""
Python 函数的一般形式及参数的更多相关文章
- 第5章函数进阶 第5.1节 Python函数的位置参数、关键字参数精讲
前面第二章简单介绍了函数定义的语法,经过后面一系列的学习,函数有必要再次介绍一下相关内容. 一. 关于函数的语法 1. 语法 def 函数名([参数]): 函数文档字符串 函数体 ...
- Python - 函数形参之必填参数、缺省参数、可变参数、关键字参数的详细使用
Python函数形参 必传参数:平时最常用的,必传确定数量的参数 缺省参数:在调用函数时可以传也可以不传,如果不传将使用默认值 可变参数:可变长度参数 关键字参数:长度可变,但是需要以kv对形式传参 ...
- python函数中的不定长参数
python自定义函数中有两中不定长参数,第一种是*name,第二种是**name.加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数.加了两个星号 ** 的参数会以字典的 ...
- Python函数小结(1)--参数类型(*, ** 的区别), 闭包
刚开始学习python,python相对于java确实要简洁易用得多.内存回收类似hotspot的可达性分析, 不可变对象也如同java得Integer类型,with函数类似新版本C++的特性,总体来 ...
- Python函数或者类的时间参数的默认值设为datetime.date.today()引起的问题
定义了函数def main(start_date=datetime.date.today(), end_date=datetime.date.today()): pass 函数在项目启动后, end_ ...
- Python函数中参数类型
在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...
- 使用可变对象作为python函数默认参数引发的问题
写python的都知道,python函数或者方法可以使用默认参数,比如 1 def foo(arg=None): 2 print(arg) 3 4 foo() 5 6 foo("hello ...
- Python函数的关键字参数
除了位置参数的函数参数使用方式,还有一种在函数调用时指定形参等于指定实参的参数使用模式,该模式称为关键字参数.关键字参数使用可以不按形参的顺序传递实参,系统按形参的名字确认实参传递给哪个参数. 具体内 ...
- python函数的学习笔记
这篇文章是我关于学习python函数的一些总结 一.随着函数的引入,这里首先要说的就是全局变量和局部变量了. 什么是全局变量.什么是局部变量: 全局变量就是全局都能调用的变量,一般都在文件的开头,顶头 ...
随机推荐
- ZendFramework-2.4 源代码 - 开始
ZendFramework 是一种PHP框架. 写在前面 最早遇到ZendFramework是在阅读一款叫Magento电子商务系统源代码时看到,后来因为工作,把注意力侧重在其他方面,就搁置了继续了解 ...
- GC回收的对象
垃圾收集(Carbage Collection) java内存在运行时区域,程序计数器.java虚拟机栈.本地方法三个区域都是线程私有的内存区域,随着线程的启动和销毁而分配和回收.栈帧随着方法的调 ...
- P1605迷宫
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- tomcat8+idea远程调试
window下 setenv.bat增加 set JPDA_OPTS=-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n lin ...
- TCP/IP网络编程之多线程服务端的实现(二)
线程存在的问题和临界区 上一章TCP/IP网络编程之多线程服务端的实现(一)的thread4.c中,我们发现多线程对同一变量进行加减,最后的结果居然不是我们预料之内的.其实,如果多执行几次程序,会发现 ...
- Java-读取txt生成excel
本段代码的目的是从txt文本中读取相应格式的数据,然后写入到对应格式的excel文档中 在敲本段代码的时候,也学习了一些其它知识点,如下: 1.byte[] b_charset= String.get ...
- Intellij idea 出现错误 error:java: 无效的源发行版: 8解决方法
这是由于jdk的版本与项目的要求不一致造成的,如果是maven项目,首先查看一下pom.xml,以我的项目为例: <build> <plugins> <plugin> ...
- Python 包导入
首先我们先了解下python中寻找模块的顺序 是否是内建模块 ->主目录 ->PYTHONPATH环境变量 ->标准库 -> 首先判断这个model是否是built-in,即内 ...
- SPFA - Luogu 3385 【模板】负环
[模板]负环 描述 找负环 输入 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 接下来M行,每行三个整数a b w,表示a->b有一条权值为w ...
- Autofac Mvc5 Nuget
Autofac 3.5.2 Install-Package Autofac -Version 3.5.2 Autofac ASP.NET MVC 5 Integration 3.3.3 Install ...