function1.py
# Functions是可以重复使用的程序片段。通过调用Calling函数,就可以重复使用
# len range 都是内置函数
# 函数用来构建不同块 通过def来定义
def say_hello(): #这个函数没有参数
#该块属于这一函数
print('hello world')
#函数结束
print('Done')
say_hello()
say_hello()
function_param.py
#参数在定义函数的圆括号中指定 通过(,)进行分隔
#定义函数时给定的名称叫形参Parameters
#调用函数时提供给函数的值叫实参Arguments
def print_max(a,b): #a,b为形参
if a > b:
print(a, 'is maximum')
elif a == b:
print(a, 'is equal to', b)
else:
print(b, 'is maximum')
#直接传递字面值
print_max(3,4)
#以参数形式传递
#x y为实参
x = 5
y = 7
print_max(x,y)
function_local.py
# 在函数内部声明变量时,它不会与函数外部的同名变量产生关系
# 它的作用域Scope仅在函数内部
x = 50
def func(x):
print('global x is', x)
x = 2
print('change local x to', x)
func(x)
print('global x is still', x)
function_global.py
# 要想定义一个global变量必须要使用global关键字
x = 50
def func():
global x #定义此处的x为global变量 global x,y,z
print('global x is', x)
x = 2
print('change global x to', x)
func()
print('Now global x is', x)
function_default.py
# 为函数提供默认值
# 通过(=)来为参数指定默认参数值
# 默认参数值是不可变的,即字面值常量
def say(message='Hi',times=1):
print(message * times)
say()
say('Hello\t')
say('Hello\t',5)
#只有位于参数列表末尾的参数才能被赋予参数值,即在参数列表中
#有默认参数值的参数不能在没有默认参数值的参数前面 因为值是按照参数位置依次分配的
#example:
#def func(a,b=5) right
#def func(a=5,b) wrong
#如果你定义的函数没有形参 但是你调用的时候传递了实参那也会报错
function_keyword.py
# 如果函数有很多参数,但你只希望对其中的一些进行指定,
# 那么可以通过命名而不是位置来指定参数
def func(a, b=5, c=10):
print('a is', a, 'and b is', b, 'and c is', c)
func(3,7)
func(25,c=24)
func(c=50,a=100)
func(a=50)
#一定要指定a的值 不管是通过命名还是通过位置指定 否则会报错
function_varargs.py
# 定义的函数里的参数变量是可变的
# 通过(*)实现
# 声明一个诸如*param的星号参数时,从此处开始到结束的所有位置参数parameters
# 将被汇集成一个param的元组Tuple
# 声明一个诸如**param的双星号参数时,从此处开始到结束的所有关键字参数
# 都被汇集成一个param的字典Dictionary
def total(a=5, *numbers, **phonebook):
print('a', a)
#遍历元组中所有项目
for single_item in numbers:
print('single_item', single_item)
#遍历字典中所有项目
for first_part,second_part in phonebook.items():
print(first_part,second_part)
total(10,15,21,aa=1,bb=2,cc=4)
print(total(10,15,21,aa=1,bb=2,cc=4)) #这里的None是怎么回事?
#下面已经解释了函数默认return的就是None
***function_return.py
def maximum(x, y):
if x > y:
return x
elif x == y:
return 'The numbers are equal'
else:
return y
print(maximum(2,3))
print(maximum(2,2))
print(maximum(-5,-2))
# return 默认返回的值是None
# 每一个函数在其末尾隐含了一句 return None
# pass可以不使用return语句 它用于指示一个没有内容的语句块
function_docString.py
def print_max(x,y):
# 下面是该函数的文档字符串DocString
# 第一行以大写字母开头,以句号结束。阐述这个函数的作用。
# 第二行是空行。
# 第三行开始是详细的解释说明
# 在文档中出现中文会报错 这一问题还没解决
'''Prints the maximum of two number.
The two values must be integers.'''
x = int(x)
y = int(y)
if x > y:
print(x, 'is maximum')
else:
print(y, 'is maximum')
print_max(3,5)
print(print_max.__doc__)
help(print_max)
# 函数的__doc__属性可以获取文档字符串内容。
# 因为Python所有的东西都是可以视作一个对象
function_dir.py
# dir()函数能够返回由对象所定义的名称列表
# 如果对象是一个模块 则会包含模块内的函数 类 变量
# dir()函数返回参数模块的名称列表
# 如果没有参数 则返回当前模块的名称列表
import sys
# 给出sys模块的属性名称
print(dir(sys))
# 给出当前模块的属性名称
print(dir())
a = 5
print(dir())
del a
print(dir())
# dir()能对任何对象工作 dir(str)