Python学习示例源码

Posted ranxf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习示例源码相关的知识,希望对你有一定的参考价值。

函数和函数式编程

  • 函数定义;

  • 函数调用;

  • 过程定义;

  • 过程调用;

  • 面向过程的编程方法;

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

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

为什么要使用函数:

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学习示例源码的主要内容,如果未能解决你的问题,请参考以下文章

python 机器学习有用的代码片段

学习笔记:python3,代码片段(2017)

python学习笔记-flask学习

使用 Python 代码片段编写 LaTeX 文档

Python学习总结

C语言100个经典算法源码片段