码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习示例源码

时间:2018-03-14 15:54:17      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:names   python   必须   查看   参数   编写   数据   位置   ret   

函数和函数式编程

  • 函数定义;

  • 函数调用;

  • 过程定义;

  • 过程调用;

  • 面向过程的编程方法;

示例:函数定义和过程定义

示例:使用函数减少重复代码

为什么要使用函数:

1.减少重复代码

示例:使用函数使程序变得可扩展

2.使程序变得可扩展

示例:函数返回值

编写函数为什么要有返回值,作用:想要这个函数的执行结果。

函数体中可以是一行代码,也可以是一万行代码。这个函数执行的结果是什么,我后面的程序需要这个程序的返回结果。

示例:带参数的函数

学会以下传参方法:位置参数;默认参数;参数组传参;字典参数传参

示例:参数带参数组的函数定义方式

示例:参数带字典的函数定义方式

示例:参数可扩展的函数定义方式

如有疑问,可加入QQ学习群:484601288

 

?局部变量和与全局变量

?是否可在一个函数中引用另外一个函数呢?

示例:局部变量

# 局部变量:函数里面的变量即为局部变量,只在函数里有效
        
        
def change_name(name):
    print("befor change", name)
    name = San Zhang  # 这个函数就是这个变量的作用域
    print("after change", name)
        
name = zhangsan
change_name(name)
print(name)

示例:全局变量

# 全局变量:在整个程序中都生效的变量,在整个代码的顶层定义的变量就是全局变量
       
company = ali
       
       
def change_name(name):
    company = tengxu
    print("befor change", name, company)
    name = zhangsan  # 这个函数就是这个变量的作用域
    print("after change", name)
       
print(company)
       
name = lisi
change_name(name)
print(name, company)

示例:局部变量改为全局变量1

在函数里面,默认情况下“字符串”和“常量”,这两类局部变量不能更改全局变量,如果想在函数中将局部变量改为全局变量的方法:改之前申明global,不建议使用这种方法。

# 在函数里面,默认情况下局部变量不能更改全局变量,如果想在函数中将局部变量改为全局变量的方法:改之前申明global,不建议使用这种方法
       
company = ali  # 全局变量
       
       
def change_name(name):
    global company
    company = tengxu    # 局部变量
    print("befor change", name, company)
    name = zhangsan  # 这个函数就是这个变量的作用域
    print("after change", name)
       
print(company: , company)   # 执行查看函数调用前打印的情况
name = lisi
change_name(name)
print(name)
print(company: , company)   # 执行查看函数调用后打印的情况

示例:局部变量改为全局变量2

未像<局部变量改为全局变量1>那样申明global,也将局部变量更改为全局变量了。所以默认不能更改只针对“字符串和整数”外。复杂的数据类型:列表,类,字典,集合都是可以将局部变量改为全局变量。

# 局部变量改全局变量
    
company = ali  # 全局变量
names = [zhangsan, sili, wangwu]
    
    
def change_name():
    names[0] = 张三
    print("inside_func: ", names)          # 运行查看执行结果
    
change_name()
print(ouside_func:, names)   # 运行查看执行结果

示例:作死的全局变量定义

或许你在其他地方也会看见这种方式,忘掉这种方式,不能使用这种方法,这种在逻辑复杂的代码中不利于调试,尽管是自己写的代码也会如此。

# 不建议使用这种方法
def chang_name():
    global name
    name = zhangsan
     
chang_name()
print(name)

示例:使用递归方式实现,传一个值,每次除以2直到不能除为止

递归特性:1、必须有一个明确的结束条件;2、每次进入更深一层递归时,问题规模相比上次递归都应有减少;3、递归效率不高,可能会导致内存资源耗尽

做递归最好的运行方式,采用断点方式调试。

简单的一个递归方式实现传一个值,每次除以2直到不能除为止:

# 传一个值,每次除以2直到不能除为止
  
def calc(n):
    print(n)
    if int(n/2)>0:
        return calc(int(n/2))
    print(--->>, n)
  
calc(10)

所有示例程序均在Ubuntu16.04系统下的python3.5下成功执行。

如有疑问,可加入QQ学习群讨论:484601288

Python学习示例源码

标签:names   python   必须   查看   参数   编写   数据   位置   ret   

原文地址:https://www.cnblogs.com/ranxf/p/8567886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!