Function

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)

你可能感兴趣的:(Function)